From: Dénes Harmath Date: Thu, 22 Jul 2010 22:25:19 +0000 (+0200) Subject: Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into... X-Git-Tag: release/2.13.29-1~1^2~5 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d7c0f4263534307616c82d9b2ce6fdef9472456f;hp=ce40a498e9f6977a5d65af8fbe5d904c3b29ec37;p=lilypond.git Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into lilypond/translation --- diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 1b6652221d..76ba8b56d1 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -66,6 +66,16 @@ which scares away people. @end ignore +@item +The autobeaming settings syntax has been changed. beatLength, +beatGrouping, beamSettings, and measureGrouping have all been eliminated. +Autobeaming is now controlled by baseMoment, beatStructure, and +beamExceptions. Default settings for each of these properties can be +stored for any time signature in time-signature-settings, so that +when the time signature is changed, the autobeaming will automatically +change. The new syntax should be much easier and require fewer +overrides. + @item The SVG backend has optional support for @uref{http://www.w3.org/Submission/WOFF, WOFF fonts}. Using the Scheme diff --git a/Documentation/contributor/doc-work.itexi b/Documentation/contributor/doc-work.itexi index c002698f1c..c5554ad440 100644 --- a/Documentation/contributor/doc-work.itexi +++ b/Documentation/contributor/doc-work.itexi @@ -535,7 +535,9 @@ command ;) @unnumberedsubsubsec Cross references Enter the exact @code{@@node} name of the target reference between -the brackets (eg.@tie{}@w{@samp{@@ref@{Syntax survey@}}}). +the brackets (eg.@tie{}@w{@samp{@@ref@{Syntax survey@}}}). Do not +split a cross-reference across two lines -- this causes the +cross-reference to be rendered incorrectly in html documents. @itemize @item diff --git a/Documentation/contributor/programming-work.itexi b/Documentation/contributor/programming-work.itexi index b131c423c2..34f33f49ce 100644 --- a/Documentation/contributor/programming-work.itexi +++ b/Documentation/contributor/programming-work.itexi @@ -1983,6 +1983,69 @@ argument, where around-central-C is some function that is called from make-autochange-music. +@subheading More on context and music properties + +From Neil Puttock, in response to a question about transposition: + +Context properties (using \set & \unset) are tied to engravers: they +provide information relevant to the generation of graphical objects. + +Since transposition occurs at the music interpretation stage, it has +no direct connection with engravers: the pitch of a note is fixed +before a notehead is created. Consider the following minimal snippet: + +@example +@{ c' @} +@end example + +This generates (simplified) a NoteEvent, with its pitch and duration +as event properties, + +@example +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0) +@end example + +which the Note_heads_engraver hears. It passes this information on to +the NoteHead grob it creates from the event, so the head's correct +position and duration-log can be determined once it's ready for +printing. + +If we transpose the snippet, + +@example +\transpose c d @{ c' @} +@end example + +the pitch is changed before it reaches the engraver (in fact, it +happens just after the parsing stage with the creation of a +TransposedMusic music object): + +@example +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 1 0) +@end example + +You can see an example of a music property relevant to transposition: +untransposable. + +@example +\transpose c d @{ c'2 \withMusicProperty #'untransposable ##t c' @} +@end example + +-> the second c' remains untransposed. + +Take a look at lily/music.cc to see where the transposition takes place. + + @subheading How do I tell about the execution environment? I get lost figuring out what environment the code I'm looking at is in when it diff --git a/Documentation/de/notation/rhythms.itely b/Documentation/de/notation/rhythms.itely index 34158d385b..ebac74e573 100644 --- a/Documentation/de/notation/rhythms.itely +++ b/Documentation/de/notation/rhythms.itely @@ -542,7 +542,7 @@ c2 ~ c Die Definition von Muster für die Strichelung der Bindebögen hat die gleiche Struktur wie die Definition für Legatobögen. Zu weiterer Information zu komplizierten Strichelungsmustern, siehe -die Schnipsel im Abschnitt @ref{Legatobögen}. +die Schnipsel im Abschnitt @ref{Legatobögen}. @predefined @code{\tieUp}, @@ -995,12 +995,12 @@ berücksichtigt. @translationof Displaying rhythms @menu -* Taktangabe:: -* Auftakte:: -* Musik ohne Metrum:: -* Polymetrische Notation:: -* Automatische Aufteilung von Noten:: -* Melodierhythmus anzeigen:: +* Taktangabe:: +* Auftakte:: +* Musik ohne Metrum:: +* Polymetrische Notation:: +* Automatische Aufteilung von Noten:: +* Melodierhythmus anzeigen:: @end menu @node Taktangabe @@ -1661,9 +1661,10 @@ Stimmen zusammenstoßen. @cindex Gesangstext und Balken @funindex autoBeaming -@funindex beamSettings +@funindex beatStructure +@funindex beamExceptions @funindex measureLength -@funindex beatLength +@funindex baseMoment @funindex \time @funindex time @funindex \set @@ -1745,12 +1746,12 @@ Balkenregeln werden verändert mit @code{\overrideBeamSettings} und @code{\revertBeamSettings}. @lilypond[quote,relative=2,verbatim] - \time 5/16 - c8^"beats" c16 c8 | - \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3))) - c8^"(2+3)" c16 c8 - \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2))) - c8^"(3+2)" c16 c8 +\time 5/16 +c8^"beats" c16 c8 | +\set beatStructure = #'(2 3) +c8^"(2+3)" c16 c8 +\set beatStructure = #'(3 2) +c8^"(3+2)" c16 c8 @end lilypond Balkenregelveränderungen können auf bestimmte Kontexte beschränkt @@ -1761,16 +1762,16 @@ niedrigere befindet. @lilypond[quote, verbatim,relative=1] \new Staff << \time 7/8 + \set Staff.beatStructure = #'(2 3 2) \new Voice = one { \relative c'' { - \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2))) a8 a a a a a a } } \new Voice = two { \relative c' { \voiceTwo - \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3))) + \set Voice.beatStructure = #'(1 3 3) f8 f f f f f f } } @@ -1786,12 +1787,12 @@ Systems angewendet werden sollen: % rhythm 3-1-1-2 % Context Voice specified -- does not work correctly % Because of autogenerated voices, all beating will -% be at beatLength (1 . 8) -\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2))) +% be at baseMoment (1 . 8) +\set beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> % Works correctly with context Staff specified -\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2))) +\set Staff.beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> @end lilypond @@ -1810,13 +1811,13 @@ wie für @code{overrideBeamSettings}, außer das kein Wert für @lilypond[quote,verbatim,relative=2] \time 4/4 -\repeat unfold 16 {a16} -% set default rule for (1 1 1 1) grouping -\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1))) -\repeat unfold 16 {a16} -% revert the new rule -\revertBeamSettings #'Score #'(4 . 4) #'end -\repeat unfold 16 {a16} +\repeat unfold 8 {a8} +% set beaming rule for ending all beams at (1 . 4) +\set Timing.beamExceptions = #'() +\repeat unfold 8 {a8} +% go back to default behavior +\time 4/4 +\repeat unfold 8 {a8} @end lilypond @@ -1826,7 +1827,7 @@ wie für @code{overrideBeamSettings}, außer das kein Wert für @funindex subdivideBeams @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{sub-dividing-beams.ly} +{subdividing-beams.ly} @cindex Taktgruppen @cindex Schlaggruppen @@ -1993,10 +1994,10 @@ Snippets: @translationof Bars @menu -* Taktstriche:: -* Taktzahlen:: -* Takt- und Taktzahlüberprüfung:: -* Übungszeichen:: +* Taktstriche:: +* Taktzahlen:: +* Takt- und Taktzahlüberprüfung:: +* Übungszeichen:: @end menu @node Taktstriche @@ -2503,9 +2504,9 @@ Referenz der Interna: @translationof Special rhythmic concerns @menu -* Verzierungen:: -* An Kadenzen ausrichten:: -* Verwaltung der Zeiteinheiten:: +* Verzierungen:: +* An Kadenzen ausrichten:: +* Verwaltung der Zeiteinheiten:: @end menu @node Verzierungen diff --git a/Documentation/es/notation/rhythms.itely b/Documentation/es/notation/rhythms.itely index 3743751905..8d72b7531d 100644 --- a/Documentation/es/notation/rhythms.itely +++ b/Documentation/es/notation/rhythms.itely @@ -154,7 +154,7 @@ pauta; véase @ref{Dirección y posición}. @snippets @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{dot-count-override.ly} +{changing-the-number-of-augmentation-dots-per-note.ly} @seealso @@ -1711,9 +1711,10 @@ alteraciones accidentales de las otras voces. @cindex letra y barrado @funindex autoBeaming -@funindex beamSettings +@funindex beamExceptions +@funindex baseMoment +@funindex beatStructure @funindex measureLength -@funindex beatLength @funindex \time @funindex time @funindex \set @@ -1813,9 +1814,9 @@ nuevo patrón de barrado.} @lilypond[quote,relative=2,verbatim] \time 5/16 c8^"beats" c16 c8 | -\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3))) +\set beatStructure = #'(2 3) c8^"(2+3)" c16 c8 -\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2))) +\set beatStructure = #'(3 2) c8^"(3+2)" c16 c8 @end lilypond @@ -1824,22 +1825,24 @@ específicos. Si no se incluye ningún ajuste en un contexto de nivel más bajo, se aplican los ajustes del contexto circundante. @lilypond[quote, verbatim,relative=1] -\new Staff << +\new Staff { \time 7/8 - \new Voice = one { - \relative c'' { - \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2))) + \set Staff.beatStructure = #'(2 3 2) + << + \new Voice = one { + \relative c'' { a8 a a a a a a + } } - } - \new Voice = two { - \relative c' { - \voiceTwo - \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3))) - f8 f f f f f f + \new Voice = two { + \relative c' { + \voiceTwo + \set Voice.beatStructure = #'(1 3 3) + f8 f f f f f f + } } - } ->> + >> +} @end lilypond En caso de usar varias voces, se debe especificar el contexto @@ -1851,12 +1854,12 @@ pentagrama: % rhythm 3-1-1-2 % Context Voice specified -- does not work correctly % Because of autogenerated voices, all beating will -% be at beatLength (1 . 8) -\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2))) +% be at baseMoment (1 . 8) +\set beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> % Works correctly with context Staff specified -\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2))) +\set Staff.beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> @end lilypond @@ -1876,15 +1879,14 @@ ningún valor para @var{agrupación}: @lilypond[quote,verbatim,relative=2] \time 4/4 \repeat unfold 8 {a8} -% set default rule for (1 1 1 1) grouping -\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1))) +% set beaming rule for ending all beams at (1 . 4) +\set Timing.beamExceptions = #'() \repeat unfold 8 {a8} -% revert the new rule -\revertBeamSettings #'Score #'(4 . 4) #'end +% go back to default beahavior +\time 4/4 \repeat unfold 8 {a8} @end lilypond - @predefined @code{\overrideBeamSettings}, @code{\revertBeamSettings}. @@ -1896,7 +1898,7 @@ ningún valor para @var{agrupación}: @cindex barras, subdivisión @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{sub-dividing-beams.ly} +{subdividing-beams.ly} @cindex compás, agrupación @cindex pulsos, agrupación @@ -2601,7 +2603,7 @@ c1 \mark \default @noindent La letra@tie{}@q{I} se salta de acuerdo con las tradiciones de grabado. Si quiere incluir la letra @q{I}, use una de las -instrucciones siguientes, según el estilo de marcas de +instrucciones siguientes, según el estilo de marcas de ensayo que desee (sólo letras, letras dentro de un rectángulo o letras dentro de un círculo). diff --git a/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc b/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc new file mode 100644 index 0000000000..dee68017e3 --- /dev/null +++ b/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b + + texidoces = " +Este ejemplo demuestra cómo se puede definir el grabador de ámbito en +el espacio del usuario, con un grabador de Scheme. + +Esto es básicamente una reescritura en Scheme del código de +@file{lily/ambitus-engraver.cc}. + +" + + doctitlees = "Definir un grabador en Scheme: grabador de ámbito" diff --git a/Documentation/es/texidocs/scheme-engraver-ambitus.texidoc b/Documentation/es/texidocs/scheme-engraver-ambitus.texidoc deleted file mode 100644 index dee68017e3..0000000000 --- a/Documentation/es/texidocs/scheme-engraver-ambitus.texidoc +++ /dev/null @@ -1,12 +0,0 @@ -%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b - - texidoces = " -Este ejemplo demuestra cómo se puede definir el grabador de ámbito en -el espacio del usuario, con un grabador de Scheme. - -Esto es básicamente una reescritura en Scheme del código de -@file{lily/ambitus-engraver.cc}. - -" - - doctitlees = "Definir un grabador en Scheme: grabador de ámbito" diff --git a/Documentation/es/web/introduction.itexi b/Documentation/es/web/introduction.itexi index 5d2ec5e91e..653bac9af2 100644 --- a/Documentation/es/web/introduction.itexi +++ b/Documentation/es/web/introduction.itexi @@ -1095,7 +1095,7 @@ con Vim, probablemente prefiera utilizar un editor distinto para escribir archivos de entrada de LilyPond. Hay más información sobre la configuración de Emacs y de Vim en -@rprogram{Text editor support}. +@rprogram{Apoyo respecto de los editores de texto}. @divEnd diff --git a/Documentation/extending/programming-interface.itely b/Documentation/extending/programming-interface.itely index 7848b0f1bd..7b1637e564 100644 --- a/Documentation/extending/programming-interface.itely +++ b/Documentation/extending/programming-interface.itely @@ -958,33 +958,36 @@ of the broken tie is repositioned. @lilypond[quote,verbatim,ragged-right] #(define (my-callback grob) - (let* ( - ; have we been split? - (orig (ly:grob-original grob)) + (let* ( + ;; have we been split? + (orig (ly:grob-original grob)) - ; if yes, get the split pieces (our siblings) - (siblings (if (ly:grob? orig) - (ly:spanner-broken-into orig) '() ))) + ;; if yes, get the split pieces (our siblings) + (siblings (if (ly:grob? orig) + (ly:spanner-broken-into orig) + '()))) - (if (and (>= (length siblings) 2) - (eq? (car (last-pair siblings)) grob)) - (ly:grob-set-property! grob 'extra-offset '(-2 . 5))))) + (if (and (>= (length siblings) 2) + (eq? (car (last-pair siblings)) grob)) + (ly:grob-set-property! grob 'extra-offset '(-2 . 5))))) \relative c'' { \override Tie #'after-line-breaking = #my-callback - c1 ~ \break c2 ~ c + c1 ~ \break + c2 ~ c } @end lilypond @noindent When applying this trick, the new @code{after-line-breaking} callback -should also call the old one @code{after-line-breaking}, if there is -one. For example, if using this with @code{Hairpin}, -@code{ly:hairpin::after-line-breaking} should also be called. +should also call the old one, if such a default exists. For example, +if using this with @code{Hairpin}, @code{ly:spanner::kill-zero-spanned-time} +should also be called. -@item Some objects cannot be changed with @code{\override} for +@item +Some objects cannot be changed with @code{\override} for technical reasons. Examples of those are @code{NonMusicalPaperColumn} and @code{PaperColumn}. They can be changed with the @code{\overrideProperty} function, which works similar to @code{\once diff --git a/Documentation/fr/notation/expressive.itely b/Documentation/fr/notation/expressive.itely index 470a424b91..15310cca7a 100644 --- a/Documentation/fr/notation/expressive.itely +++ b/Documentation/fr/notation/expressive.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 + Translation of GIT committish: a02ca233bc1a2af11980d8eab1e874c559cdff09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -19,6 +19,9 @@ @lilypondfile[quote]{expressive-headword.ly} +Ce chapitre traite des différentes indications d'interprétation que l'on +peut trouver sur les partitions. + @menu * Indications attachées à des notes:: * Courbes:: @@ -31,7 +34,7 @@ @translationof Attached to notes Nous allons voir au cours de ces lignes comment ajouter aux notes des -indications d'interprétation -- articulation, ornementation, nuances -- +indications d'interprétation -- articulation, ornementation, nuance -- et aborderons la manière de générer vos propres signes. @menu @@ -72,6 +75,48 @@ et aborderons la manière de générer vos propres signes. @cindex coda @cindex varcoda +@funindex \accent +@funindex \marcato +@funindex \staccatissimo +@funindex \espressivo +@funindex \staccato +@funindex \tenuto +@funindex \portato +@funindex \upbow +@funindex \downbow +@funindex \flageolet +@funindex \thumb +@funindex \lheel +@funindex \rheel +@funindex \ltoe +@funindex \rtoe +@funindex \open +@funindex \halfopen +@funindex \stopped +@funindex \snappizzicato +@funindex \turn +@funindex \reverseturn +@funindex \trill +@funindex \prall +@funindex \mordent +@funindex \prallprall +@funindex \prallmordent +@funindex \upprall +@funindex \downprall +@funindex \upmordent +@funindex \downmordent +@funindex \pralldown +@funindex \prallup +@funindex \lineprall +@funindex \signumcongruentiae +@funindex \shortfermata +@funindex \fermata +@funindex \longfermata +@funindex \verylongfermata +@funindex \fermataMarkup +@funindex \segno +@funindex \coda +@funindex \varcoda @funindex - Les différents symboles qui indiquent des ponctuations ou des modes de @@ -82,7 +127,7 @@ jeu différents s'ajoutent aux notes de la manière suivante : @end example Les valeurs de @var{nom} sont répertoriées dans l'annexe -@ref{Liste des signes d'articulation}. En voici un exemple : +@ref{Liste des signes d'articulation}. En voici un exemple@tie{}: @lilypond[verbatim,quote,relative=2] c4\staccato c\mordent b2\turn @@ -113,6 +158,32 @@ contenues dans le fichier @code{scm/@/script@/.scm}, il est possible de l'obliger à les positionner au-dessus ou en-dessous de la note, comme indiqué au chapitre @ref{Direction et positionnement}. +Les articulations sont des objets de type @code{script}@tie{}; les +propriétés de ces objets sont abordées plus en détail au chapitre +@rinternals{Script}. + +Une articulation peut se rattacher aussi bien à un silence qu'à une +note, mais @strong{pas à un silence multi-mesures}. Il existe cependant +un cas particulier@tie{}: le point d'orgue -- ou point d'arrêt -- +attaché à un silence valant l'intégralité de la mesure. LilyPond +dispose à cet effet de la commande @code{\fermataMarkup}, qui créera un +objet @code{MultiMeasureRestText} rattaché à ce @qq{silence +multi-mesures}. + +@lilypond[verbatim,quote,relative=2] +\override Script #'color = #red +\override MultiMeasureRestText #'color = #blue +a2\fermata r\fermata +R1\fermataMarkup +@end lilypond + +En dehors des articulations habituelles, vous pouvez adjoindre du texte +-- avec ou sans mise en forme -- à n'importe quelle note. Voir à ce +propos @ref{Commentaires textuels}. + +Pour plus d'information sur la manière d'ordonner @code{Scripts} et +@code{TextScripts}, consultez le chapitre +@rlearning{Positionnement des objets}. @snippets @@ -132,7 +203,11 @@ Glossaire musicologique : @rglos{staccato}, @rglos{portato}. +Manuel d'initiation : +@rlearning{Positionnement des objets}. + Manuel de notation : +@ref{Commentaires textuels}, @ref{Direction et positionnement}, @ref{Liste des signes d'articulation}, @ref{Trilles}. @@ -191,13 +266,13 @@ Référence des propriétés internes : @funindex \rfz @funindex rfz -À chaque nuance absolue correspond une commande, qui peut être indiquée -après une note : @code{c4\ff} par exemple. Les commandes de nuance +À chaque nuance absolue correspond une commande qui peut être indiquée +après une note@tie{}: @code{c4\ff} par exemple. Les commandes de nuance disponibles sont @code{\ppppp}, @code{\pppp}, @code{\ppp}, @code{\pp}, @code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff}, @code{\ffff}, @code{\fffff}, @code{\fp}, @code{\sf}, @code{\sff}, @code{\sp}, @code{\spp}, @code{\sfz}, et @code{\rfz}. Les nuances se -placent aussi bien en dessous qu'au-dessus de la portée ; pour plus +placent aussi bien en dessous qu'au-dessus de la portée@tie{}; pour plus d'information, consultez @ref{Direction et positionnement}. @lilypond[verbatim,quote,relative=2] @@ -220,8 +295,10 @@ c2_\spp c^\ff @funindex decr Un crescendo est délimité par @code{\<} et @code{\!}, ou peut se -terminer par une commande de nuance. Au lieu de @code{\<} -ou @code{\>}. +terminer par une commande de nuance explicite, ou bien un decrescendo ou un +nouveau crescendo. Il en va de même pour un diminuendo. Au lieu de @code{\<} +et @code{\>}, vous pouvez utiliser @code{\cr} et @code{\decr}, auquele +cas LilyPond n'imprimera pas de @emph{soufflet}. @lilypond[verbatim,quote,relative=2] c2\< c\! @@ -233,9 +310,9 @@ d2\> d\> c1\! @end lilypond -Ces indications sont attachées aux notes ; aussi si l'on veut +Ces indications sont attachées aux notes@tie{}; aussi si l'on veut faire se succéder plusieurs nuances pendant une note tenue, il faudra -avoir recours à des silences invisibles : +avoir recours à des silences invisibles@tie{}: @cindex nuances successives sur une note tenue @cindex tenue et nuances successives @@ -278,7 +355,7 @@ une notation textuelle. Une ligne pointillée marque alors son étendue. Sont disponibles les commandes @code{\crescTextCresc}, @code{\dimTextDecresc}, @code{\dimTextDecr}, et @code{\dimTextDim}. @code{\crescHairpin} et @code{\dimHairpin} permettent de revenir à des -nuances en soufflet +nuances en soufflet. @lilypond[verbatim,quote,relative=2] \crescTextCresc @@ -406,7 +483,8 @@ parenthèses ou crochets) grâce aux étiquettes (@emph{mode markup}) ; l syntaxe en est abordée au chapitre @ref{Mise en forme du texte}. @lilypond[verbatim,quote] -roundF = \markup { \center-align \concat { \bold { \italic ( } +roundF = \markup { + \center-align \concat { \bold { \italic ( } \dynamic f \bold { \italic ) } } } boxF = \markup { \bracket { \dynamic f } } \relative c' { @@ -430,7 +508,7 @@ sfzp = #(make-dynamic-script "sfzp") } @end lilypond -@code{make-dynamic-script} accepte en argume tout objet de type +@code{make-dynamic-script} accepte en argument tout objet de type @emph{markup}. Notez bien que la police des nuances ne contient que les caractères @code{f,m,p,r,s} et @code{z}, et que les marques de nuances possèdent des propriétés particulières et prédéfinies quant à leur @@ -439,7 +517,7 @@ vous recommandons d'utiliser @code{\normal-text} pour annuler ces propriétés. L'intérêt majeur de recourrir à la fonction @code{make-dynamic-script} plutôt qu'à un simple @emph{markup} réside dans l'assurance que ces objets personnalisés et les soufflets seront -alignés lorsque attachés à une même note. +alignés lorsqu'attachés à une même note. @lilypond[verbatim,quote] roundF = \markup { \center-align \concat { @@ -462,7 +540,7 @@ mfEspressDynamic = #(make-dynamic-script mfEspress) @end lilypond La constrution d'une indication de nuance personnalisée peut aussi se -faire en langage Scheme ; voir @ref{Construction Scheme d'un marqueur} +faire en langage Scheme@tie{}; voir @ref{Construction Scheme d'un marqueur} pour en connaître les modalités. @lilypond[verbatim,quote] @@ -482,7 +560,6 @@ L'utilisation des fontes en mode @emph{markup} est abordée au chapitre @seealso Manuel de notation : @ref{Mise en forme du texte}, -@ref{Sélection de la fonte et de la taille}, @ref{Construction Scheme d'un marqueur}, @ref{Contenu de la sortie MIDI}, @ref{Gestion des nuances en MIDI}. @@ -490,6 +567,9 @@ Manuel de notation : Morceaux choisis : @rlsr{Expressive marks}. +Manuel d'extension : +@rextend{Sélection de la fonte et de la taille}, + @node Courbes @subsection Courbes @@ -565,7 +645,7 @@ plus courtes, utilisez des @ref{Liaisons de phrasé}. @funindex slurSolid Une liaison est par défaut dessinée d'une ligne pleine. Il est aussi -possible de l'imprimer sous la forme de tirets ou en pointillé : +possible de l'imprimer sous la forme de tirets ou en pointillé@tie{}: @lilypond[verbatim,quote,relative=1] c4( e g2) @@ -603,7 +683,7 @@ g4( e c2) @cindex liaison, densité des tirets -Vous pouvez même personnaliser la densité des tirets d'une liaison : +Vous pouvez même personnaliser la densité des tirets d'une liaison@tie{}: @lilypond[verbatim,quote,relative=1] c4( e g2) @@ -671,6 +751,9 @@ Référence des propriétés internes : @cindex liaisons de phrasé @cindex phrasé, liaisons de +@funindex \( +@funindex \) + Une liaison de phrasé relie plusieurs notes en délimitant une phrase musicale. On indique les points de départ et d'arrivée avec @code{\(} et @code{\)} respectivement. @@ -718,7 +801,7 @@ Il n'est pas possible d'avoir plusieurs liaisons de phrasé en même temps. @funindex phrasingSlurSolid Une liaison est par défaut dessinée d'une ligne pleine. Il est aussi -possible de l'imprimer sous la forme de tirets ou en pointillé : +possible de l'imprimer sous la forme de tirets ou en pointillé@tie{}: @lilypond[verbatim,quote,relative=1] c4\( e g2\) @@ -756,7 +839,7 @@ g4\( e c2\) @cindex liaison, densité des tirets -Vous pouvez même personnaliser la densité des tirets d'une liaison : +Vous pouvez même personnaliser la densité des tirets d'une liaison@tie{}: @lilypond[verbatim,quote,relative=1] c4\( e g2\) @@ -807,6 +890,7 @@ Référence des propriétés internes : @translationof Breath marks @cindex respiration, indication +@cindex point d'arrêt @funindex \breathe @funindex breathe @@ -818,8 +902,16 @@ Les indications de respiration sont indiquées par la commande c2. \breathe d4 @end lilypond +Un signe de respiration interrompt obligatoirement les ligatures, même +automatiques. Pour passer outre ce fonctionnement, voir +@ref{Ligatures manuelles}. + +@lilypond[verbatim,quote,relative=2] +c8 \breathe d e f g2 +@end lilypond + LilyPond gère les @emph{divisiones}, signes utilisés en notation -ancienne pour indiquer les respirations. Pour de plus amples détails, +ancienne pour indiquer les respirations. Pour de plus amples détails, voir @ref{Divisions}. @@ -845,7 +937,9 @@ Morceaux choisis : @rlsr{Expressive marks}. Référence des propriétés internes : -@rinternals{BreathingSign}. +@rinternals{BreathingEvent}, +@rinternals{BreathingSign}, +@rinternals{Breathing_sign_engraver}. @node Chutes et sauts @@ -866,6 +960,8 @@ l'intervalle avec la note de départ. @lilypond[verbatim,quote,relative=2] c2-\bendAfter #+4 c2-\bendAfter #-4 +c2-\bendAfter #+6.5 +c2-\bendAfter #-6.5 c2-\bendAfter #+8 c2-\bendAfter #-8 @end lilypond @@ -967,7 +1063,7 @@ le long de la ligne de glissando. @funindex arpeggioNormal On peut indiquer qu'un accord doit être arpégé en lui accolant la -commande @code{\arpeggio} : +commande @code{\arpeggio}@tie{}: @lilypond[verbatim,quote,relative=1] 1\arpeggio @@ -998,7 +1094,7 @@ LilyPond dispose de différents graphismes pour indiquer un arpège. @funindex \arpeggioParenthesisDashed @funindex arpeggioParenthesisDashed -Des crochets indiquent que l'accord devra être plaqué et non arpégé : +Des crochets indiquent que l'accord devra être plaqué et non arpégé@tie{}: @lilypond[verbatim,quote,relative=1] 2 @@ -1016,9 +1112,9 @@ Des crochets indiquent que l'accord devra être plaqué et non arpégé : 2\arpeggio @end lilypond -@c pas trouvé cette propriété, ou alors mal lu ? jcm -@c The dash properties of the parenthesis arpeggio are controlled -@c with the @code{'dash-details} property, which is described at @ref{Slurs}. +Les indications d'arpeggio peuvent se présenter sous la forme de ligne +discontinue à l'aide de la propriété @code{'dash-details}. Pour plus +de détails à ce propos, consultez @ref{Liaisons d'articulation}. Un arpège peut parfois s'écrire de manière explicite, à l'aide de liaisons de tenue. Pour plus d'information, voir @@ -1091,25 +1187,48 @@ forme de parenthèse. @funindex stopTrillSpan Les trilles brefs s'indiquent comme n'importe quelle ponctuation, avec un -simple @code{\trill} ; voir @ref{Articulations et ornements}. +simple @code{\trill}@tie{}; voir @ref{Articulations et ornements}. Les trilles plus longs sont délimités par @code{\startTrillSpan} et -@code{\stopTrillSpan} : +@code{\stopTrillSpan}@tie{}: @lilypond[verbatim,quote,relative=2] -d1~\startTrillSpan +d1\startTrillSpan +d1 +c2\stopTrillSpan r2 +@end lilypond + +Lorsqu'un saut de ligne intervient alors qu'une prolongation de trille +est présente, l'indication de trille et sa prolongation sont rappellées +sur la première note de la nouvelle ligne@tie{}: + +@lilypond[ragged-right,verbatim,quote,relative=2] +d1\startTrillSpan +\break d1 c2\stopTrillSpan r2 @end lilypond +Lorsque des trilles interviennent sur une succession de hauteurs +différentes, point n'est besoin d'expliciter la commande +@code{\stopTrillSpan} puisque l'apparition d'un nouveau trille +interrompt de fait celui qui le précédait@tie{}: + +@lilypond[verbatim,quote,relative=2] +d1\startTrillSpan +d1 +b1\startTrillSpan +d2\stopTrillSpan r2 +@end lilypond + Dans l'exemple suivant, un trille se combine avec des notes d'ornement. La syntaxe d'une telle construction ainsi que le moyen de positionner les notes d'ornement avec précision est expliquée dans @ref{Notes d'ornement}. @lilypond[verbatim,quote,relative=2] -c1 \afterGrace +d1~\afterGrace d1\startTrillSpan { c32[ d]\stopTrillSpan } e2 r2 @end lilypond @@ -1121,31 +1240,36 @@ e2 r2 Les trilles qui font intervenir une hauteur précise peuvent être indiqués par la commande @code{pitchedTrill}. Le premier argument est -la note réelle ; le second est une hauteur qui sera imprimée comme une -tête de note noire entre parenthèses. +la note réelle@tie{}; le second est une hauteur qui sera imprimée comme +une tête de note noire entre parenthèses. -@lilypond[verbatim,quote,relative=1] -\pitchedTrill e2\startTrillSpan fis -d\stopTrillSpan +@lilypond[verbatim,quote,relative=2] +\pitchedTrill +e2\startTrillSpan fis +d2 c2\stopTrillSpan @end lilypond @cindex trilles avec hauteur explicite et altération @cindex altération, trilles avec hauteur explicite -Dans l'exemple suivant, le deuxième trille est ambigu -- le fa qui est -forcé n'est pas diésé. Pour lever toute ambiguité, il suffit de forcer -l'impression de l'altération -- en ajoutant un @code{!} -- comme dans -la deuxième mesure. +Dans l'exemple suivant, le second trille de la deuxième mesure est +ambigu -- le fa qui est forcé n'est pas diésé. Pour lever toute +ambiguïté, il suffit de forcer l'impression de l'altération en +ajoutant un @code{!} à la note considérée. @lilypond[verbatim,quote,relative=2] -\pitchedTrill eis4\startTrillSpan fis -g\stopTrillSpan -\pitchedTrill eis4\startTrillSpan fis -g\stopTrillSpan -\pitchedTrill eis4\startTrillSpan fis -g\stopTrillSpan -\pitchedTrill eis4\startTrillSpan fis! -g\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan fis +eis4\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan cis +eis4\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan fis +eis4\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan fis! +eis4\stopTrillSpan @end lilypond diff --git a/Documentation/fr/notation/rhythms.itely b/Documentation/fr/notation/rhythms.itely index 9cd5d9b149..81cc19aeb4 100644 --- a/Documentation/fr/notation/rhythms.itely +++ b/Documentation/fr/notation/rhythms.itely @@ -23,12 +23,12 @@ Cette section traite du rythme : durées, silences, barres de ligature et de mesure. @menu -* Écriture du rythme:: -* Écriture des silences:: -* Gravure du rythme:: -* Barres de ligature:: -* Mesures:: -* Fonctionnalités rythmiques particulières:: +* Écriture du rythme:: +* Écriture des silences:: +* Gravure du rythme:: +* Barres de ligature:: +* Mesures:: +* Fonctionnalités rythmiques particulières:: @end menu @@ -37,10 +37,10 @@ et de mesure. @translationof Writing rhythms @menu -* Durées:: -* Nolets:: -* Changement d'échelle des durées:: -* Liaisons de prolongation:: +* Durées:: +* Nolets:: +* Changement d'échelle des durées:: +* Liaisons de prolongation:: @end menu @node Durées @@ -90,7 +90,7 @@ c4 c8 c16 c32 c64 c64 Une note dont la durée est de quatre brèves s'obtient par la commande @code{\maxima}. Celle-ci n'est toutefois disponible que dans le cadre de -la notation ancienne. Pour plus de détails, voir @ref{Notations anciennes}. +la notation ancienne. Pour plus de détails, voir @ref{Notations anciennes}. @cindex durée par défaut @cindex défaut, durée @@ -124,10 +124,10 @@ mais uniquement en @qq{liant} deux ou plusieurs notes entre elles. Voir @ref{Liaisons de prolongation} à ce sujet. Quant à la manière de spécifier la durée des syllabes ou bien d'aligner -des paroles par rapport aux notes, reportez-vous au chapitre +des paroles par rapport aux notes, reportez-vous au chapitre @ref{Musique vocale}. -Espacer les notes selon leur durée relative est tout à fait possible. +Espacer les notes selon leur durée relative est tout à fait possible. Pour plus de détails à ce sujet et sur les autres réglages propres à cette forme de notation, reportez-vous à @ref{Notation proportionnelle}. @@ -181,8 +181,8 @@ Manuel des références internes : @knownissues @c Deliberately duplicated in Durations and Rests. -gp -Il n'existe pas à proprement parler de limite (inférieure ou supérieure) -en terme de durée d'un silence. Cependant, le nombre de glyphes +Il n'existe pas à proprement parler de limite (inférieure ou supérieure) +en terme de durée d'un silence. Cependant, le nombre de glyphes disponibles ne couvre que les silences allant du trente-deuxième de soupir à la maxime (valant huit pauses). @@ -208,8 +208,8 @@ fraction. @noindent La durée de @var{expression_musicale} sera multipliée par la fraction. Le dénominateur de cette fraction sera imprimé au-dessus ou au-dessous -des notes, parfois avec un crochet. Le nolet le plus courant est le -triolet, dans lequel 3 notes ont la durée de 2, et où les notes durent +des notes, parfois avec un crochet. Le nolet le plus courant est le +triolet, dans lequel 3 notes ont la durée de 2, et où les notes durent donc 2/3 de leur valeur écrite. @lilypond[quote,verbatim,relative=2] @@ -228,7 +228,7 @@ c4 c \times 2/3 { b4 a g } Des commandes prédéfinies permettent de déroger au positionnement automatique du crochet en surplomb ou au-dessous des notes -- voir le -chapitre @ref{Direction et positionnement}. +chapitre @ref{Direction et positionnement}. Les nolets peuvent être imbriqués ; par exemple, @@ -236,7 +236,7 @@ Les nolets peuvent être imbriqués ; par exemple, \autoBeamOff c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 | @end lilypond - + Lorsque, dans une imbrication, les nolets débutent au même instant, il vous faut recourir à la commande @code{\tweak}. @@ -281,7 +281,7 @@ Music Glossary: @rglos{tuplet}, @rglos{polymetric}. -Manuel d'apprentissage : +Manuel d'apprentissage : @rlearning{Méthodes de retouche}. Manuel de notation : @@ -408,7 +408,7 @@ a2 ~ a @noindent Les liaisons de tenue sont utilisées soit lorsque la note dépasse de la -mesure, soit quand les points ne suffisent pas à donner la bonne durée. +mesure, soit quand les points ne suffisent pas à donner la bonne durée. Lorsque l'on utilise ces liaisons, les valeurs rythmiques les plus longues doivent s'aligner sur les subdivisions de la mesure, comme ici : @@ -557,7 +557,7 @@ Glossaire musical : @rglos{tie}, @rglos{laissez vibrer}. -Dans ce manuel : +Dans ce manuel : @ref{Découpage automatique des notes}. Morceaux choisis : @@ -586,12 +586,12 @@ résultat indéfini. Dans ces cas-là, il est préférable d'utiliser un @translationof Writing rests On saisit les silences dans une expression musicale tout comme les -notes. +notes. @menu -* Silences:: -* Silences invisibles:: -* Silences valant une mesure:: +* Silences:: +* Silences invisibles:: +* Silences valant une mesure:: @end menu @node Silences @@ -728,15 +728,15 @@ requiert une durée explicite. @end lilypond La commande de saut génère simplement une case musicale vide. Le code -de saut @code{s} crée tout de même les contextes @code{Staff} et -@code{Voice} lorsque nécessaire, à l'instar des notes ou des silences : - +de saut @code{s} crée tout de même les contextes @code{Staff} et +@code{Voice} lorsque nécessaire, à l'instar des notes ou des silences : + @lilypond[quote,verbatim,fragment] s1 s s @end lilypond Un @code{\skip} ne fait que sauter du temps musical ; il ne produit rien -du tout, pas même un symbole transparent. +du tout, pas même un symbole transparent. @lilypond[quote,verbatim,fragment] % This is valid input, but does nothing @@ -765,7 +765,7 @@ Référence du programme : @funindex R Un silence valant une ou plusieurs mesures entières s'entre avec un -@code{R} majuscule. +@code{R} majuscule. @lilypond[quote,verbatim,relative=2] % Rest measures contracted to single measure @@ -845,7 +845,7 @@ R2.*2 | @funindex \fermataMarkup @funindex fermataMarkup @funindex MultiMeasureRestText - + Vous pouvez aussi ajouter du texte à un silence multimesure en utilisant la syntaxe @var{note}-@code{markup} (cf. @ref{Mise en forme du texte}). La variable @code{\fermataMarkup} quant à elle permet d'ajouter un point @@ -946,15 +946,15 @@ positionner des nombres au dessus d'un silence multimesure, le numéro de doigt (4) risquant de chevaucher le nombre de mesures à compter (10). @cindex condenser les silences -@cindex silences, condenser les +@cindex silences, condenser les -Condenser plusieurs silences en un unique silence multimesure ne peut -être automatisé. +Condenser plusieurs silences en un unique silence multimesure ne peut +être automatisé. @cindex silences, collisions entre Les silences multimesure peuvent générer des collisions avec d'autres -silences. +silences. @node Gravure du rythme @@ -962,12 +962,12 @@ silences. @translationof Displaying rhythms @menu -* Métrique:: -* Levées:: -* Musique sans métrique:: -* Notation polymétrique:: -* Découpage automatique des notes:: -* Gravure de lignes rythmiques:: +* Métrique:: +* Levées:: +* Musique sans métrique:: +* Notation polymétrique:: +* Découpage automatique des notes:: +* Gravure de lignes rythmiques:: @end menu @node Métrique @@ -996,7 +996,7 @@ La métrique est imprimée en début de morceau, et à chaque fois qu'elle est modifiée. Si cette modification intervient au niveau d'un saut de ligne, une métrique @qq{de précaution} sera imprimée avant de passer à la ligne suivante. Ce comportement par défaut peut être modifié, comme -indiqué au chapitre @ref{Visibilité des objets}. +indiqué au chapitre @ref{Visibilité des objets}. @lilypond[quote,verbatim,relative=2] \time 2/4 @@ -1034,7 +1034,7 @@ changé pour un style numérique : @end lilypond -Les métriques anciennes sont abordées au chapitre +Les métriques anciennes sont abordées au chapitre @ref{Métriques anciennes}. @@ -1070,8 +1070,8 @@ Morceaux choisis : Références internes : @rinternals{TimeSignature}, @rinternals{Timing_translator}. - - + + @node Levées @unnumberedsubsubsec Levées @translationof Upbeats @@ -1137,7 +1137,7 @@ Références internes : @knownissues -@code{\partial} n'est destiné à être utilisé qu'en début de pièce. +@code{\partial} n'est destiné à être utilisé qu'en début de pièce. Si on l'utilise ailleurs qu'au début, des messages d'erreurs peuvent s'afficher. @@ -1263,7 +1263,7 @@ Il suffit, pour obtenir cette forme de notation, de tout d'abord affecter une même métrique aux différentes portées. L'indicateur de métrique sera ensuite remplacé dans chacune des portées par un quotient donné en argument à la propriété @code{timeSignatureFraction}. La durée des -notes sera enfin proratisée selon la métrique commune (voir +notes sera enfin proratisée selon la métrique commune (voir @ref{Métrique}) grâce à la fonction @code{\scaleDurations}, qui s'utilise tout comme la commande @code{\times} -- sans toutefois créer de crochet de nolet (voir @ref{Changement d'échelle des durées}). @@ -1272,7 +1272,7 @@ de crochet de nolet (voir @ref{Changement d'échelle des durées}). @cindex polymétrie et ligature L'exemple suivant utilise parallèlement des mesures à 3/4, 9/8 et -10/8. Pour la deuxième portée les durées sont multipliées par 2/3 +10/8. Pour la deuxième portée les durées sont multipliées par 2/3 de telle sorte que @w{2/3 * 9/8 = 3/4} ; pour la troisième elles sont multipliées par 3/5, de telle sorte que @w{3/5 * 10/8 = 3/4}. Les ligatures devront être explicites, la fonction d'échelonnement venant @@ -1531,10 +1531,10 @@ Référence du programme : @translationof Beams @menu -* Barres de ligature automatiques:: -* Définition des règles de ligature automatique:: -* Barres de ligature manuelles:: -* Liens de croches en soufflet:: +* Barres de ligature automatiques:: +* Définition des règles de ligature automatique:: +* Barres de ligature manuelles:: +* Liens de croches en soufflet:: @end menu @node Barres de ligature automatiques @@ -1559,7 +1559,7 @@ d'imprimer les ligatures. @end lilypond Lorsque ce comportement automatisé n'est pas satisfaisant, on peut -définir des groupements manuellement -- voir +définir des groupements manuellement -- voir @ref{Barres de ligature manuelles}. Dans le cas où le groupe de notes en question contient un silence, il est @strong{impératif} d'indiquer explicitement les début et fin de la ligature. @@ -1643,9 +1643,10 @@ altérations appartenant à d'autres voix. @cindex paroles et ligatures @funindex autoBeaming -@funindex beamSettings +@funindex beamExceptions +@funindex baseMoment +@funindex beatStructure @funindex measureLength -@funindex beatLength @funindex \time @funindex time @funindex \set @@ -1669,7 +1670,7 @@ toujours respectée ; sinon sinon @item si une règle explicite de terminaison a été définie pour un type -de ligature dans la métrique en cours, c'est elle qui s'appliquera ; sinon +de ligature dans la métrique en cours, c'est elle qui s'appliquera ; sinon @item if a default beam-ending rule is defined in the time signature, use it to group notes with beams, otherwise @@ -1693,7 +1694,7 @@ pour plus d'information, consultez @ref{Gestion du temps}. Les règles de ligature et de subdivision sont enregistrées dans la propriété @code{beamSettings}. Ses valeurs par défaut, rangées par métrique et type de règle, sont contenues dans le fichier -@code{scm/@/beam@/-settings@/.scm}. +@code{scm/@/beam@/-settings@/.scm}. La métrique est constituée d'une paire en langage Scheme -- p.ex. @w{@code{#'(4 . 4)}}. @@ -1703,7 +1704,7 @@ terminaisons, soit @code{#'subdivide} pour les subdivisions. Chaque règle, qu'il s'agisse de terminaison ou de subdivision, est constituée d'une liste de paires en langage Scheme (un @emph{alist} pour -les puristes), qui indique le durée de base et sa règle de regroupement. +les puristes), qui indique le durée de base et sa règle de regroupement. @example #'((durée-type1 . groupement-1) @@ -1714,24 +1715,24 @@ les puristes), qui indique le durée de base et sa règle de regroupement. @var{durée-type} est soit constitué d'une paire indiquant la durée de base -- par exemple @w{@code{(1 . 16)}}, soit du caractère @code{*} pour indiquer une règle par défaut qui s'appliquera à toutes les ligatures en -l'absence de règle explicite. +l'absence de règle explicite. @var{groupement} est constitué d'une liste Scheme qui indique le regroupement à effectuer. En ce qui concerne les règles par défaut -- celles où la durée type est @code{*} -- le regroupement s'indique en terme de @code{beatLength} ; pour les règles explicites, en durée -type. +type. -Les règles de ligature automatique se modifient à l'aide des commandes +Les règles de ligature automatique se modifient à l'aide des commandes @code{\overrideBeamSettings} et @code{\revertBeamSettings}. @lilypond[quote,relative=2,verbatim] - \time 5/16 - c8^"beats" c16 c8 | - \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3))) - c8^"(2+3)" c16 c8 - \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2))) - c8^"(3+2)" c16 c8 +\time 5/16 +c8^"beats" c16 c8 | +\set beatStructure = #'(2 3) +c8^"(2+3)" c16 c8 +\set beatStructure = #'(3 2) +c8^"(3+2)" c16 c8 @end lilypond Les effets de règles de ligature peuvent être restreints à un contexte @@ -1740,22 +1741,24 @@ contexte de niveau inférieur, les règles définies au niveau directement supérieur s'appliqueront. @lilypond[quote, verbatim,relative=1] -\new Staff << +\new Staff { \time 7/8 - \new Voice = one { - \relative c'' { - \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2))) + \set Staff.beatStructure = #'(2 3 2) + << + \new Voice = one { + \relative c'' { a8 a a a a a a + } } - } - \new Voice = two { - \relative c' { - \voiceTwo - \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3))) - f8 f f f f f f + \new Voice = two { + \relative c' { + \voiceTwo + \set Voice.beatStructure = #'(1 3 3) + f8 f f f f f f + } } - } ->> + >> +} @end lilypond Lorsque plusieurs voix cohabitent sur une même portée et que les règles @@ -1765,14 +1768,14 @@ ces règles affectent le contexte @code{Staff} : @lilypond[quote,verbatim,relative=2] \time 7/8 % rhythm 3-1-1-2 -% Context Voice specified - does not work correctly +% Context Voice specified -- does not work correctly % Because of autogenerated voices, all beating will -% be at beatLength (1 . 8) -\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2))) +% be at baseMoment (1 . 8) +\set beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> % Works correctly with context Staff specified -\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2))) +\set Staff.beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> @end lilypond @@ -1790,13 +1793,13 @@ règles de regroupement. @lilypond[quote,verbatim,relative=2] \time 4/4 -\repeat unfold 16 {a16} -% set default rule for (1 1 1 1) grouping -\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1))) -\repeat unfold 16 {a16} -% revert the new rule -\revertBeamSettings #'Score #'(4 . 4) #'end -\repeat unfold 16 {a16} +\repeat unfold 8 {a8} +% set beaming rule for ending all beams at (1 . 4) +\set Timing.beamExceptions = #'() +\repeat unfold 8 {a8} +% go back to default beahavior +\time 4/4 +\repeat unfold 8 {a8} @end lilypond @snippets @@ -1804,7 +1807,7 @@ règles de regroupement. @cindex beams, subdividing @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{sub-dividing-beams.ly} +{subdividing-beams.ly} @cindex measure groupings @cindex beats, grouping @@ -1883,7 +1886,7 @@ Lorsque l'une ou l'autre de ces propriétés est définie, elle ne s'applique qu'une seule fois, après quoi sa définition est effacée. Dans l'exemple qui suit, le dernier @code{fa} n'a de ligature supplémentaire que sur sa gauche ; autrement dit, c'est la ligature à la -croche qui est importante. +croche qui est importante. @lilypond[quote,relative=2,verbatim] a8[ r16 f g a] @@ -1952,7 +1955,7 @@ quatre dernières gardent un tempo régulier. @noindent Si le résultat imprimable ne reflète les durées que de manière approximative, la sortie MIDI sera quant à elle parfaitement -@qq{ponctuelle}. +@qq{ponctuelle}. @knownissues @@ -1971,10 +1974,10 @@ Morceaux choisis : @menu -* Barres de mesure:: -* Numéros de mesure:: -* Vérification des limites et numéros de mesure:: -* Indications de repère:: +* Barres de mesure:: +* Numéros de mesure:: +* Vérification des limites et numéros de mesure:: +* Indications de repère:: @end menu @node Barres de mesure @@ -2027,7 +2030,7 @@ de barre de mesure visible, en utilisant : Ceci insérera une barre de mesure invisible, et permettra -- sans pour autant le forcer -- de sauter de ligne à cet endroit, sans incrémenter le numéro de mesure. Pour forcer le saut de ligne, référez-vous à -@ref{Sauts de ligne}. +@ref{Sauts de ligne}. @cindex manuelle, barre de mesure @cindex barre de mesure manuelle @@ -2038,7 +2041,7 @@ d'une mesure, elles remplacent la simple barre que LilyPond aurait insérée automatiquement. Dans le cas contraire, la barre spécifiée s'insérera là où vous l'aurez positionnée. Ces insertions n'affectent en rien le calcul du positionnement automatique des barres de mesure à -suivre. +suivre. Vous disposez de deux types de barres simples et de cinq différentes doubles barres : @@ -2117,7 +2120,7 @@ d'un @code{GrandStaff}. @cindex barre de mesure par défaut, modification du style -@cindex modification du style par défaut des barres de mesure +@cindex modification du style par défaut des barres de mesure @snippets @@ -2128,26 +2131,26 @@ d'un @code{GrandStaff}. @funindex bartype -La commande @code{\bar }@var{type_de_barre} sert de raccourci pour +La commande @code{\bar }@var{type_de_barre} sert de raccourci pour @code{\set Timing.whichBar = }@var{type_de_barre}. Dès que l'on définit @code{whichBar}, une barre de mesure est créée selon le style défini. -Le type de barre de mesure par défaut utilisé pour l'insertion +Le type de barre de mesure par défaut utilisé pour l'insertion automatique est @code{"|"}. Vous pouvez en changer à tout moment grâce à @code{\set@tie{}Timing.defaultBarType@tie{}=@tie{}}@var{type_de_barre}. @seealso -Dans ce manuel : -@ref{Sauts de ligne}, -@ref{Répétitions et reprises}, +Dans ce manuel : +@ref{Sauts de ligne}, +@ref{Répétitions et reprises}, @ref{Regroupement de portées}. Morceaux choisis : @rlsr{Rhythms}. -Référence du programme : -@rinternals{BarLine} (faisant partie du contexte @rinternals{Staff}), +Référence du programme : +@rinternals{BarLine} (faisant partie du contexte @rinternals{Staff}), @rinternals{SpanBar} (sur plusieurs portées), @rinternals{Timing_translator} (pour les propriétés liées au temps). @@ -2229,7 +2232,7 @@ c1 | c | c | c Morceaux choisis : @rlsr{Rhythms}. -Référence du programme : +Référence du programme : @rinternals{BarNumber}. @@ -2435,19 +2438,19 @@ Pour affiner le positionnement des repères, veuillez vous référer à @seealso -Dans ce manuel : +Dans ce manuel : @ref{La fonte Feta}, @ref{Mise en forme du texte}. -Fichiers d'initialisation : +Fichiers d'initialisation : @file{scm/@/translation@/-functions@/.scm} contient les définitions de @code{format-mark-numbers} et @code{format-mark-letters}. Elles seront source d'inspiration pour d'autres fonctions de formatage. -Morceaux choisis : +Morceaux choisis : @rlsr{Rhythms}. -Référence du programme : +Référence du programme : @rinternals{RehearsalMark}. @@ -2457,9 +2460,9 @@ Référence du programme : @menu -* Notes d'ornement:: -* Alignement et cadences:: -* Gestion du temps:: +* Notes d'ornement:: +* Alignement et cadences:: +* Gestion du temps:: @end menu @node Notes d'ornement @@ -2600,13 +2603,13 @@ Glossaire musicologique : @rglos{acciaccatura}, @rglos{appoggiatura}. -Fichiers source : +Fichiers source : @file{ly/@/grace@/-init@/.ly}. -Morceaux choisis : +Morceaux choisis : @rlsr{Rhythms}. -Référence du programme : +Référence du programme : @rinternals{GraceMusic}. @@ -2664,7 +2667,7 @@ Dans un contexte orchestral, une cadence constitue un problème spécifique. Lors du montage d'une partition contenant une cadence, tous les autres instruments doivent sauter autant de notes que ce qu'en comporte la cadence, faute de quoi ils démarreraient trop tôt ou -trop tard. +trop tard. Les fonctions @code{mmrest-of-length} ou @code{skip-of-length} permettent de résoudre ce problème. Ces fonctions Scheme prennent en @@ -2771,8 +2774,8 @@ Par conséquent, @code{ly:make-moment 1 8} correspond à une croche, et @seealso -Dans ce manuel : -@ref{Numéros de mesure}, +Dans ce manuel : +@ref{Numéros de mesure}, @ref{Musique sans métrique} Morceaux choisis : diff --git a/Documentation/fr/web/community.itexi b/Documentation/fr/web/community.itexi index fe1c0e1f71..7006427704 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: 68cf70682a542701a918f8bfff50f2b8b85f84e2 + Translation of GIT committish: 7c9a0da142b6037180d557f12ba1ada366226606 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -828,9 +828,9 @@ with Constraint Satisfaction Programming}, International Computer Music Conference 2008. @item -A. Passos, M. Silva, P. Kroger, et G. Cidra, +Alexandre Tachard Passos, Marcos Sampaio, Pedro Kröger, Givaldo de Cidra, @emph{Functional Harmonic Analysis and Computational Musicology -in Rameau}, Proceedings of the 12th Brazilian Symposium on Compute +in Rameau}, Proceedings of the 12th Brazilian Symposium on Computer Music, 2009, p. 207-210. @item @@ -840,7 +840,7 @@ New Trends in Artificial Intelligence, 2007 J. Neves et al ed. @item -Kevin C. Baird 2005. +Kevin C. Baird 2005, @emph{Real-time generation of music notation via audience interaction using python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces For Musical Expression (Vancouver, Canada, May 26 - 28, 2005). diff --git a/Documentation/fr/web/introduction.itexi b/Documentation/fr/web/introduction.itexi index 28e277f984..3ba9edc3ec 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: 22b6ca7247b6f0d596934d38aa2c75d5e45206eb + Translation of GIT committish: 7c9a0da142b6037180d557f12ba1ada366226606 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -584,8 +584,7 @@ partitions de musique sacrée de grande qualité, disponibles immédiatement en téléchargement ou sous forme de partition imprimable. @item -@uref{http://theshadylanepublishing.com/, The Shady Lane -Publishing}, +@uref{http://http://www.shadylane.fr/, The Shady Lane Publishing}, est un @qq{micro-éditeur de partitions musicales} qui a pour but de promouvoir une nouvelle forme de pratique économique, plus proche des musiciens et amoureux de la musique. diff --git a/Documentation/learning/fundamental.itely b/Documentation/learning/fundamental.itely index 7404324417..05169ca42d 100644 --- a/Documentation/learning/fundamental.itely +++ b/Documentation/learning/fundamental.itely @@ -2819,6 +2819,79 @@ signature to each staff using our predefined variable, @code{\keyTime}. @} % end Score context @end example +@cindex stretchability of staves +@cindex staves, stretchability + +The above layout of the organ staves is almost perfect; however, +there is a slight defect which is not visible by looking at just a +single system: The distance of the pedal staff to the left hand staff +should behave approximately the same as the right hand staff to the +left hand staff. In particular, the stretchability of staves in a +@code{PianoStaff} context is limited (so that the distance between +the staves for the left and right hand can't become too large), and +the pedal staff should behave similarly. + +@cindex sub-properties +@cindex properties, sub-properties +@cindex graphical objects +@cindex objects, graphical +@cindex grobs + +Stretchability of staves can be controlled with the +@code{next-staff-spacing} property of the @code{VerticalAxisGroup} +@q{graphical object} (commonly called @q{grob}s within the lilypond +documentation) -- don't worry about the details right now; this is +fully explained later. For the curious, have a look at +@ruser{Overview of modifying properties}. Currently, it is not +possible to modify the @code{stretchability} sub-property only, we +thus have to copy the other sub-properties also. Again, for the +curious, you can find the default values in file +@file{scm/@/define-grobs@/.scm} by looking up the definition of the +@code{VerticalAxisGroup} grob. The value for @code{stretchability} +is taken from the definition of the @code{PianoStaff} context (in +file @file{ly/@/engraver-init@/.ly}) so that the values are +identical. + +@example +\score @{ + << % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \keyTime % set key and time signature + \clef "treble" + \new Voice @{ + \voiceOne + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \voiceTwo + \ManualOneVoiceTwoMusic + @} + >> % end ManualOne Staff context + \new Staff = "ManualTwo" \with @{ + \override VerticalAxisGroup + #'next-staff-spacing = #'((space . 9) + (minimum-distance . 8) + (padding . 1) + (stretchability . 5)) + @} << + \keyTime + \clef "bass" + \new Voice @{ + \ManualTwoMusic + @} + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \keyTime + \clef "bass" + \new Voice @{ + \PedalOrganMusic + @} + >> % end PedalOrgan Staff + >> +@} % end Score context +@end example That completes the structure. Any three-staff organ music will have a similar structure, although the number of voices may vary. All that remains now @@ -2862,7 +2935,13 @@ PedalOrganMusic = \relative c { \ManualOneVoiceTwoMusic } >> % end ManualOne Staff context - \new Staff = "ManualTwo" << + \new Staff = "ManualTwo" \with { + \override VerticalAxisGroup + #'next-staff-spacing = #'((space . 9) + (minimum-distance . 8) + (padding . 1) + (stretchability . 5)) + } << \keyTime \clef "bass" \new Voice { diff --git a/Documentation/learning/tweaks.itely b/Documentation/learning/tweaks.itely index d79ba1289d..8440dd72ff 100644 --- a/Documentation/learning/tweaks.itely +++ b/Documentation/learning/tweaks.itely @@ -2908,7 +2908,7 @@ We end this section on Tweaks by showing the steps to be taken to deal with a tricky example which needs several tweaks to produce the desired output. The example has been deliberately chosen to illustrate the use of the Notation Reference to resolve unusual -problems with notation. It is not representative of more usual +problems with notation. It is not representative of the more usual engraving process, so please do not let these difficulties put you off! Fortunately, difficulties like these are not very common! @@ -2921,38 +2921,46 @@ dynamics, fingering and pedalling. @c The following should appear as music without code @c This example should not be indexed @c line-width ensures no break -@lilypond[quote,ragged-right,line-width=5.5\in] +@lilypond[quote,ragged-right,line-width=6\in] rhMusic = \relative c'' { - r2 c4.\( g8 | - \once \override Tie #'staff-position = #3.5 - bes1~ | - \bar "||" - \time 6/4 - \mergeDifferentlyHeadedOn - \mergeDifferentlyDottedOn - bes2.^\markup { \bold "Moderato" } r8 - << - { c,8 d fis bes a } - \\ - { - % Reposition the c2 to the right of the merged note - c,8~ \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work - \shiftOnn c2 - } - \\ - { - % Stem on the d2 must be down to permit merging - s8 \stemDown - \once \override Stem #'transparent = ##t - d2 - } - \\ - { s4 fis4. } - >> | - \mergeDifferentlyHeadedOff - \mergeDifferentlyDottedOff - g2.\) + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + bes2.^\markup { \bold "Moderato" } r8 + << + { c,8 d fis bes a } + \new Voice { + \voiceTwo + c,8~ + % Reposition the c2 to the right of the merged note + \once \override NoteColumn #'force-hshift = #1.0 + % Move the c2 out of the main note column so the merge will work + \shiftOnn + c2 + } + \new Voice { + \voiceThree + s8 + % Stem on the d2 must be down to permit merging + \stemDown + % Stem on the d2 should be invisible + \once \override Stem #'transparent = ##t + d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) + } } lhMusic = \relative c' { @@ -2982,31 +2990,44 @@ requires four voices. These are the five beamed eighth notes, the tied C, the half-note D which is merged with the eighth note D, and the dotted quarter note F-sharp, which is also merged with the eighth note at the same pitch. Everything else is in a single -voice, so the easiest way is to introduce these four voices +voice, so the easiest way is to introduce these extra three voices temporarily at the time they are needed. If you have forgotten -how to do this, look at @ref{I'm hearing Voices}. Let us begin -by entering the notes as two variables and setting up the staff -structure in a score block, and see what LilyPond produces by -default: +how to do this, look at @ref{I'm hearing Voices} and @ref{Explicitly +instantiating voices}. Here we choose to use explicitly instantiated +voices for the polyphonic passage, as LilyPond is better able to +avoid collisions if all voices are instantiated explicitly in this +way. + +So let us begin by entering the notes as two variables, setting up +the staff structure in a score block, and seeing what LilyPond +produces by default: @c line-width ensures no break -@lilypond[quote,verbatim,ragged-right,line-width=5.5\in] +@lilypond[quote,verbatim,ragged-right,line-width=6\in] rhMusic = \relative c'' { - r2 c4. g8 | - bes1~ | - \time 6/4 - bes2. r8 - % Start polyphonic section of four voices - << - { c,8 d fis bes a } - \\ - { c,8~ c2 } - \\ - { s8 d2 } - \\ - { s4 fis4. } - >> | - g2. | + \new Voice { + r2 c4. g8 | + bes1~ | + \time 6/4 + bes2. r8 + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + g2. % continuation of main voice + } } lhMusic = \relative c' { @@ -3032,30 +3053,38 @@ lhMusic = \relative c' { @end lilypond All the notes are right, but the appearance is far from -satisfactory. The tie clashes with the change in time signature, -the notes are not merged together, and several notation elements +satisfactory. The tie collides with the change in time signature, +some notes are not merged together, and several notation elements are missing. Let's first deal with the easier things. We can easily add the left hand slur and the right hand phrasing slur, since these were all covered in the Tutorial. Doing this gives: @c line-width ensures no break -@lilypond[quote,verbatim,ragged-right,line-width=5.5\in] +@lilypond[quote,verbatim,ragged-right,line-width=6\in] rhMusic = \relative c'' { - r2 c4.\( g8 | - bes1~ | - \time 6/4 - bes2. r8 - % Start polyphonic section of four voices - << - { c,8 d fis bes a } - \\ - { c,8~ c2 } - \\ - { s8 d2 } - \\ - { s4 fis4. } - >> | - g2.\) | + \new Voice { + r2 c4.\( g8 | + bes1~ | + \time 6/4 + bes2. r8 + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + g2.\) % continuation of main voice + } } lhMusic = \relative c' { @@ -3090,8 +3119,8 @@ produced by the @code{\bar "||"} command. That's easily done. We next need to correct the collision of the tie with the time signature. This is best done by moving the tie upwards. Moving objects was covered earlier in @ref{Moving objects}, which says that objects -positioned relative to the staff can be moved by overriding their -@code{staff-position} property, which is specified in half staff +positioned relative to the staff can be moved vertically by overriding +their @code{staff-position} property, which is specified in half staff spaces relative to the center line of the staff. So the following override placed just before the first tied note would move the tie up to 3.5 half staff spaces above the center line: @@ -3101,25 +3130,33 @@ to 3.5 half staff spaces above the center line: This completes bar two, giving: @c line-width ensures no break -@lilypond[quote,verbatim,ragged-right,line-width=5.5\in] +@lilypond[quote,verbatim,ragged-right,line-width=6\in] rhMusic = \relative c'' { - r2 c4.\( g8 | - \once \override Tie #'staff-position = #3.5 - bes1~ | - \bar "||" - \time 6/4 - bes2. r8 - % Start polyphonic section of four voices - << - { c,8 d fis bes a } - \\ - { c,8~ c2 } - \\ - { s8 d2 } - \\ - { s4 fis4. } - >> | - g2.\) | + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2. r8 + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + g2.\) % continuation of main voice + } } lhMusic = \relative c' { @@ -3146,14 +3183,14 @@ lhMusic = \relative c' { On to bar three and the start of the Moderato section. The tutorial showed how to add embolded text with the @code{\markup} command, so -adding @q{Moderato} in bold is easy. But how do we merge notes in +adding @qq{Moderato} in bold is easy. But how do we merge notes in different voices together? This is where we need to turn again to the Notation Reference for help. A search for @qq{merge} in the Notation Reference index quickly leads us to the commands for merging -differently headed and differently dotted notes in @ruser{Collision -resolution}. In our example we need to merge both types of note for -the duration of the polyphonic section in bar 3, so using the -information we find in the Notation Reference we add +differently headed and differently dotted notes in +@ruser{Collision resolution}. In our example we need to merge both +types of note for the duration of the polyphonic section in bar 3, +so using the information we find in the Notation Reference we add @example \mergeDifferentlyHeadedOn @@ -3172,29 +3209,37 @@ to the start of that section and to the end, giving: @c line-width ensures no break -@lilypond[quote,ragged-right,line-width=5.5\in] +@lilypond[quote,ragged-right,line-width=6\in] rhMusic = \relative c'' { - r2 c4.\( g8 | - \once \override Tie #'staff-position = #3.5 - bes1~ | - \bar "||" - \time 6/4 - bes2.^\markup { \bold "Moderato" } r8 - \mergeDifferentlyHeadedOn - \mergeDifferentlyDottedOn - % Start polyphonic section of four voices - << - { c,8 d fis bes a } - \\ - { c,8~ c2 } - \\ - { s8 d2 } - \\ - { s4 fis4. } - >> | - \mergeDifferentlyHeadedOff - \mergeDifferentlyDottedOff - g2.\) | + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2.^\markup { \bold "Moderato" } r8 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) % continuation of main voice + } } lhMusic = \relative c' { @@ -3238,35 +3283,39 @@ Applying these changes gives: @cindex staff-position property, example @c line-width ensures no break -@lilypond[quote,verbatim,ragged-right,line-width=5.5\in] +@lilypond[quote,verbatim,ragged-right,line-width=6\in] rhMusic = \relative c'' { - r2 c4.\( g8 | - \once \override Tie #'staff-position = #3.5 - bes1~ | - \bar "||" - \time 6/4 - bes2.^\markup { \bold "Moderato" } r8 - \mergeDifferentlyHeadedOn - \mergeDifferentlyDottedOn - % Start polyphonic section of four voices - << - { c,8 d fis bes a } - \\ - { - % Move the c2 out of the main note column so the merge will work - c,8~ \shiftOnn c2 - } - \\ - { - % Stem on the d2 must be down to permit merging - s8 \stemDown d2 - } - \\ - { s4 fis4. } - >> | - \mergeDifferentlyHeadedOff - \mergeDifferentlyDottedOff - g2.\) | + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2.^\markup { \bold "Moderato" } r8 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + % Move the c2 out of the main note column so the merge will work + c,8~ \shiftOnn c2 + } + \new Voice { + \voiceThree + % Stem on the d2 must be down to permit merging + s8 \stemDown d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) % continuation of main voice + } } lhMusic = \relative c' { @@ -3303,38 +3352,47 @@ the @code{force-hshift} property. Here's the final result: @cindex transparent property, example @c line-width ensures no break -@lilypond[quote,verbatim,ragged-right,line-width=5.5\in] +@lilypond[quote,verbatim,ragged-right,line-width=6\in] rhMusic = \relative c'' { - r2 c4.\( g8 | - \once \override Tie #'staff-position = #3.5 - bes1~ | - \bar "||" - \time 6/4 - bes2.^\markup { \bold "Moderato" } r8 - \mergeDifferentlyHeadedOn - \mergeDifferentlyDottedOn - << - { c,8 d fis bes a } - \\ - { - % Reposition the c2 to the right of the merged note - c,8~ \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work - \shiftOnn c2 - } - \\ - { - % Stem on the d2 must be down to permit merging - s8 \stemDown - \once \override Stem #'transparent = ##t - d2 - } - \\ - { s4 fis4. } - >> | - \mergeDifferentlyHeadedOff - \mergeDifferentlyDottedOff - g2.\) | + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2.^\markup { \bold "Moderato" } r8 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ + % Reposition the c2 to the right of the merged note + \once \override NoteColumn #'force-hshift = #1.0 + % Move the c2 out of the main note column so the merge will work + \shiftOnn + c2 + } + \new Voice { + \voiceThree + s8 + % Stem on the d2 must be down to permit merging + \stemDown + % Stem on the d2 should be invisible + \once \override Stem #'transparent = ##t + d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) % continuation of main voice + } } lhMusic = \relative c' { diff --git a/Documentation/music-glossary.tely b/Documentation/music-glossary.tely index 05d31302ad..942ea60bef 100644 --- a/Documentation/music-glossary.tely +++ b/Documentation/music-glossary.tely @@ -488,7 +488,7 @@ FI: accelerando, kiihdyttäen. [Italian: @q{speed up, accelerate}] -Increase tempo +An increase in the tempo, abbreviated @notation{accel.} @seealso No cross-references. @@ -680,7 +680,7 @@ Since one does not crescendo @emph{to} nothing, it is not correct to use ES: alla breve, I: ?, F: alla breve, à la brève, -D: ?, +D: Allabreve, alla breve NL: ?, DK: ?, S: ?, @@ -688,7 +688,7 @@ FI: ?. [Italian: @q{on the breve}] Twice as fast as the notation indicates. -Also called @notation{in cut-time}. The name derives from mensural +Also called @notation{in cut time}. The name derives from mensural notation, where the @notation{tactus} (or beat) is counted on the semibreve (the modern whole note). Counting @q{on the breve} shifts the tactus to the next longest note value, which (in modern usage) effectively halves all note @@ -1381,7 +1381,8 @@ FI: vaskisoitin. A family of blown musical instruments made of brass, all using a cup formed mouth piece. The brass instruments commonly used in a symphony -orchestra are trumpet, trombone, french horn, and tuba. +orchestra are trumpet, trombone, french horn, and tuba. In marching bands, +sousaphones and contrabass bugles are common. @seealso No cross-references. @@ -2336,7 +2337,7 @@ S: crescendo, FI: cresendo, voimistuen. Increasing volume. Indicated by a rightwards opening horizontal wedge -(hairpin) or the abbreviation @notation{cresc.}. +(hairpin) or the abbreviation @notation{cresc.} @lilypond[quote,relative=2] \key g \major @@ -2448,7 +2449,7 @@ DK: da capo, S: da capo, FI: da capo, alusta. -Abbreviated @notation{D.C.}. Indicates that the piece is to be repeated from +Abbreviated @notation{D.C.} Indicates that the piece is to be repeated from the beginning to the end or to a certain place marked @emph{fine}. @seealso @@ -2486,7 +2487,7 @@ DK: dal segno, S: dal segno, FI: dal segno, lähtien merkistä. -Abbreviated @notation{D.S.}. Repetition, not from the beginning, but from +Abbreviated @notation{D.S.} Repetition, not from the beginning, but from another place frequently near the beginning marked by a sign (@notation{segno}): @@ -2519,7 +2520,7 @@ S: decrescendo, FI: decresendo, hiljentyen. Decreasing tone volume. Indicated by a leftwards opening horizontal -wedge (hairpin) or the abbreviation @notation{decresc.}. +wedge (hairpin) or the abbreviation @notation{decresc.} @lilypond[quote,relative=2] \key g \major @@ -2754,6 +2755,8 @@ DK: diminuendo, S: diminuendo, FI: diminuendo, hiljentyen. +Abbreviated @emph{dim.} It indicates a decrease in tone volume. + @seealso @ref{decrescendo}. @@ -5136,7 +5139,7 @@ Two mensuration signs have survived to the present day: the C-shaped sign, which originally designated @notation{tempus imperfectum} and @notation{prolatio minor} now stands for @notation{common time}; and the slashed C, which designated the same with @notation{diminution} now stands -for @notation{cut-time} (essentially, it has not lost its original meaning). +for @notation{cut time} (essentially, it has not lost its original meaning). @seealso @ref{diminution}, @ref{proportion}, @ref{time signature}. @@ -5748,7 +5751,7 @@ As used in mensural notation, this fraction was more flexible: it could also be one-third the higher note value. Composers indicated which proportions to use with various signs—two of which survive to the present day: the C-shaped sign for @notation{common time}, and the slashed C for -@notation{alla breve} or @notation{cut-time}. +@notation{alla breve} or @notation{cut time}. @c TODO -- add maxima to this example, in a way that doesn't break it. @@ -6620,7 +6623,7 @@ DK: rallentando, S: rallentando, FI: rallerdando, hidastuen. -[Italian] A performance indication, abbreviated @notation{rall.}. +[Italian] A performance indication, abbreviated @notation{rall.} @seealso @ref{ritardando}. diff --git a/Documentation/notation/expressive.itely b/Documentation/notation/expressive.itely index c1a41341a4..9ba59343ff 100644 --- a/Documentation/notation/expressive.itely +++ b/Documentation/notation/expressive.itely @@ -108,6 +108,7 @@ Methods to create new dynamic markings are also discussed. @funindex \fermata @funindex \longfermata @funindex \verylongfermata +@funindex \fermataMarkup @funindex \segno @funindex \coda @funindex \varcoda @@ -159,6 +160,19 @@ may be manually placed above or below the staff; see Articulations are @code{Script} objects. Their properties are described more fully in @rinternals{Script}. +Articulations can be attached to rests as well as notes but they +cannot be attached to multi-measure rests. A special predefined +command, @code{\fermataMarkup}, is available for attaching a fermata +to a multi-measure rest (and only a multi-measure rest). This +creates a @code{MultiMeasureRestText} object. + +@lilypond[verbatim,quote,relative=2] +\override Script #'color = #red +\override MultiMeasureRestText #'color = #blue +a2\fermata r\fermata +R1\fermataMarkup +@end lilypond + In addition to articulations, text and markups can be attached to notes. See @ref{Text scripts}. @@ -1147,26 +1161,50 @@ cross-staff arpeggios. @funindex \stopTrillSpan @funindex stopTrillSpan -Short @notation{trills} without an extender line are printed with +Short trills without an extender line are printed with @code{\trill}; see @ref{Articulations and ornamentations}. Longer trills with an extender line are made with @code{\startTrillSpan} and @code{\stopTrillSpan}: @lilypond[verbatim,quote,relative=2] -d1~\startTrillSpan +d1\startTrillSpan +d1 +c2\stopTrillSpan +r2 +@end lilypond + +A trill spanner crossing a line break will restart exactly above +the first note on the new line. + +@lilypond[ragged-right,verbatim,quote,relative=2] +d1\startTrillSpan +\break +d1 +c2\stopTrillSpan +r2 +@end lilypond + +Consecutive trill spans will work without explicit +@code{\stopTrillSpan} commands, since successive trill spanners will +automatically become the right bound of the previous trill. + +@lilypond[verbatim,quote,relative=2] +d1\startTrillSpan d1 -c2\stopTrillSpan r2 +b1\startTrillSpan +d2\stopTrillSpan +r2 @end lilypond -In the following example, a trill is combined with grace notes. -The syntax of this construct and the method to precisely position -the grace notes are described in @ref{Grace notes}. +Trills can also be combined with grace notes. The syntax of this +construct and the method to precisely position the grace notes are +described in @ref{Grace notes}. @lilypond[verbatim,quote,relative=2] -c1 \afterGrace +d1~\afterGrace d1\startTrillSpan { c32[ d]\stopTrillSpan } -e2 r2 +c2 r2 @end lilypond @cindex pitched trills @@ -1179,29 +1217,34 @@ be typeset with the @code{\pitchedTrill} command. The first argument is the main note, and the second is the @emph{trilled} note, printed as a stemless note head in parentheses. -@lilypond[verbatim,quote,relative=1] -\pitchedTrill e2\startTrillSpan fis -d\stopTrillSpan +@lilypond[verbatim,quote,relative=2] +\pitchedTrill +d2\startTrillSpan fis +d2 +c2\stopTrillSpan +r2 @end lilypond -@cindex pitched trill with forced accidental -@cindex trill, pitched with forced accidental -@cindex accidental, forced for pitched trill +@cindex pitched trill with accidental +@cindex trill with accidental -In the following example, the second pitched trill is ambiguous; -the accidental of the trilled note is not printed. As a -workaround, the accidentals of the trilled notes can be forced. -The second measure illustrates this method: +Subsequent accidentals of the same note in the same measure will need +to be added manually. Only the accidental of the first pitched trill +in a measure is printed. @lilypond[verbatim,quote,relative=2] -\pitchedTrill eis4\startTrillSpan fis -g\stopTrillSpan -\pitchedTrill eis4\startTrillSpan fis -g\stopTrillSpan -\pitchedTrill eis4\startTrillSpan fis -g\stopTrillSpan -\pitchedTrill eis4\startTrillSpan fis! -g\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan fis +eis4\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan cis +eis4\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan fis +eis4\stopTrillSpan +\pitchedTrill +eis4\startTrillSpan fis! +eis4\stopTrillSpan @end lilypond @@ -1210,7 +1253,6 @@ g\stopTrillSpan @code{\stopTrillSpan}. @endpredefined - @seealso Music Glossary: @rglos{trill}. diff --git a/Documentation/notation/pitches.itely b/Documentation/notation/pitches.itely index 8c238fd481..84c3782773 100644 --- a/Documentation/notation/pitches.itely +++ b/Documentation/notation/pitches.itely @@ -379,7 +379,7 @@ Accidentals on tied notes are only printed at the beginning of a new system: @lilypond[verbatim,quote,relative=2] -cis1 ~ cis ~ +cis1~ cis~ \break cis @end lilypond @@ -387,10 +387,12 @@ cis @snippets +@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right] +{hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly} + @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {preventing-extra-naturals-from-being-automatically-added.ly} - @seealso Music Glossary: @rglos{sharp}, @@ -2480,6 +2482,9 @@ printed if they are not part of the key signature. @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {ambitus-with-multiple-voices.ly} +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{changing-the-ambitus-gap.ly} + @seealso Music Glossary: diff --git a/Documentation/notation/repeats.itely b/Documentation/notation/repeats.itely index 3491d200b5..924843848e 100644 --- a/Documentation/notation/repeats.itely +++ b/Documentation/notation/repeats.itely @@ -84,13 +84,9 @@ The syntax for a normal repeat is @end example @noindent -where @var{musicexpr} is a music expression. Alternate endings can be -produced using @code{\alternative}. In order to delimit the alternate -endings, the group of alternatives must be enclosed in a set of -braces. If there are more repeats than there are alternate endings, -the earliest repeats are given the first alternative. +where @var{musicexpr} is a music expression. -Normal repeats without alternate endings: +A single repeat without an alternate ending: @lilypond[verbatim,quote,relative=2] \repeat volta 2 { c4 d e f } @@ -98,17 +94,56 @@ c2 d \repeat volta 2 { d4 e f g } @end lilypond -Normal repeats with alternate endings: +Alternative endings can be produced using @code{\alternative}. Each +group of alternatives must be themselves, enclosed in a set of braces. + +@example +\repeat volta @var{repeatcount} @var{musicexpr} +\alternative @{ + @{ @var{musicexpr} @} +@} +@end example + +@noindent +where @var{musicexpr} is a music expression. + +If there are more repeats than there are alternate endings, the earliest +repeats are given the first alternative. + +A single repeat with one alternate ending: + +@lilypond[verbatim,quote,relative=2] +\repeat volta 2 { c4 d e f } +\alternative { + { c2 e } + { f2 g } +} +c1 +@end lilypond + +A single repeat with more than one alternate ending: @lilypond[verbatim,quote,relative=2] \repeat volta 4 { c4 d e f } \alternative { - { d2 e } + { c2 e } { f2 g } } c1 @end lilypond +Multiple repeats with more than one alternate ending: + +@lilypond[verbatim,quote,relative=2] +\repeat volta 3 { c4 d e f } +\alternative { + { c2 e } + { f2 g } + { a2 g } +} +c1 +@end lilypond + @warning{If you include @code{@bs{}relative} inside a @code{@bs{}repeat} without explicitly instantiating the @code{Voice} context, extra (unwanted) staves will appear. See @@ -225,6 +260,8 @@ c1 @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {adding-volta-brackets-to-additional-staves.ly} +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{setting-the-double-repeat-default-for-volte.ly} @seealso Music Glossary: @@ -301,7 +338,7 @@ For clarity, it is advisable to use braces in such situations. @warning{These methods are only used for displaying unusual repeat constructs, and may produce unexpected behavior. In most cases, -repeats should be created using the standard @code{\\repeat} command +repeats should be created using the standard @code{@bs{}repeat} command or by printing the relevant bar lines. For more information, see @ref{Bar lines}.} @@ -425,25 +462,64 @@ where @var{musicexpr} is a music expression and @var{repeatcount} is the number of times @var{musicexpr} is repeated. @lilypond[verbatim,quote,relative=2] +\repeat unfold 2 { c4 d e f } c1 +@end lilypond + +Unfold repeats can be made with alternate endings. + +@lilypond[verbatim,quote,relative=2] \repeat unfold 2 { c4 d e f } +\alternative { + { c2 g' } + { c,2 b } +} c1 @end lilypond -Unfold repeats can be made with alternate endings. If there are -more repeats than there are alternate endings, the first -alternative ending is applied to the earliest endings. +If there are more repeats than there are alternate endings, the first +alternative is applied multiple times until the remaining alternatives +make up the total number of repeats. @lilypond[verbatim,quote,relative=2] +\repeat unfold 4 { c4 d e f } +\alternative { + { c2 g' } + { c,2 b } + { e2 d } + } c1 -\repeat unfold 2 { g4 f e d } +@end lilypond + +If there are more alternate endings than repeats then the first +alternatives are applied, LilyPond will ignore the remaining +alternatives which will not be printed. + +@lilypond[verbatim,quote,relative=2] +\repeat unfold 2 { c4 d e f } +\alternative { + { c2 g' } + { c,2 b } + { e2 d } +} +c1 +@end lilypond + +It is also possible to nest multiple @code{unfold} functions (with or +without alternate endings). + +@lilypond[verbatim,quote,relative=2] +\repeat unfold 2 { + \repeat unfold 2 { c4 d e f } \alternative { - { cis2 g' } - { cis,2 b } + { c2 g' } + { c,2 b } } +} c1 @end lilypond + @warning{If you include @code{@bs{}relative} inside a @code{@bs{}repeat} without explicitly instantiating the @code{Voice} context, extra (unwanted) staves will appear. See @@ -463,8 +539,8 @@ Internals Reference: @subsection Short repeats This section discusses how to input short repeats. Short repeats can -take two basic forms: repeats of a single note to two measures, -represented by slashes or percent signs; and tremolos. +take two forms: slashes or percent signs to represent repeats of a +single note, a single measure or two measures, and tremelos otherwise. @menu * Percent repeats:: @@ -482,10 +558,10 @@ represented by slashes or percent signs; and tremolos. @funindex \repeat percent @funindex percent -Repeated short patterns of notes are supported. The music is printed -once, and the pattern is replaced with a special sign. Patterns that -are shorter than one measure are replaced by slashes, and patterns of -one or two measures are replaced by percent-like signs. The syntax is +Repeated short patterns are printed once, and the repeated pattern +is replaced with a special sign. + +The syntax is @example @code{\repeat percent @var{number} @var{musicexpr}} @@ -494,10 +570,23 @@ one or two measures are replaced by percent-like signs. The syntax is @noindent where @var{musicexpr} is a music expression. +Patterns that are shorter than one measure are replaced by slashes. + @lilypond[verbatim,quote,relative=2] +\repeat percent 4 { c8 d } \repeat percent 4 { c4 } -\repeat percent 2 { b4 a g f } -\repeat percent 2 { c2 es | f4 fis g c | } +\repeat percent 2 { c2 } +@end lilypond + +Patterns of one or two measures are replaced by percent-like signs. + +@lilypond[verbatim,quote,relative=2] +\repeat percent 3 { c4 d e f } +\repeat percent 4 { c2 d } +@end lilypond + +@lilypond[verbatim,quote,relative=2] +\repeat percent 3 { c4 d e f | c2 g' } @end lilypond @snippets diff --git a/Documentation/notation/rhythms.itely b/Documentation/notation/rhythms.itely index 6798e11e85..28c1dd87be 100644 --- a/Documentation/notation/rhythms.itely +++ b/Documentation/notation/rhythms.itely @@ -143,7 +143,7 @@ the staff; see @ref{Direction and placement}. @snippets @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{dot-count-override.ly} +{changing-the-number-of-augmentation-dots-per-note.ly} @seealso @@ -1044,6 +1044,72 @@ changed to a numeric style: Mensural time signatures are covered in @ref{Mensural time signatures}. +@cindex time signature default settings +@cindex autobeaming properties for time signatures +@cindex beaming, time signature default properties +@funindex \overrideTimeSignatureSettings + +In addition to setting the printed time signature, the @code{\time} +command also sets time-signature-based default values for the properties +@code{baseMoment}, @code{beatStructure}, and @code{beamExceptions}. The +predefined default values for these properties can be found in +@file{scm/time-signature-settings.scm}. The existing default values can +be changed, or new default values can be added: + +@lilypond[quote,verbatim] +\score { + \relative c' { + \overrideTimeSignatureSettings + #'Score + #'(4 . 4) % time signature fraction + #'(1 . 4) % base moment fraction + #'(3 1) % beatStructure + #'() % beamExceptions + \time 4/4 + \repeat unfold 8 c8 | + } +} +@end lilypond + +@code{\overrideTimeSignatureSettings} takes five arguments: +context, time signature fraction, base moment, beat structure, and +beaming exception. The context is a Scheme symbol that describes +the context to which the default setting will apply. The +time signature fraction is a Scheme pair describing the time signature. +The base moment is a Scheme pair containing the +numerator and denominator of the basic timing unit for the +time signature. The beat structure is a Scheme list indicating +the structure of the beats in the measure, in units of the base moment. +The beaming exception is an alist containing any beaming rules for the +time signature that go beyond ending at every beat, +as described in @ref{Setting automatic beam behavior}. + +@cindex time signature properties, restoring default values +@cindex restoring default properties for time signatures +@funindex \revertTimeSignatureSettings + +Changed values of default time signature properties can be restored +to the original values: + +@lilypond[quote,verbatim] + +\score{ + \relative c' { + \repeat unfold 8 c8 | + \overrideTimeSignatureSettings + #'Score + #'(4 . 4) + #'(1 . 4) + #'(3 1) + #'((end . (((1 . 8) . (3 1))))) + \time 4/4 + \repeat unfold 8 c8 | + \revertTimeSignatureSettings #'Score #'(4 . 4) + \time 4/4 + \repeat unfold 8 c8 | + } +} +@end lilypond @predefined @code{\numericTimeSignature}, @@ -1661,19 +1727,18 @@ Beams can collide with note heads and accidentals in other voices. @cindex lyrics and beaming @funindex autoBeaming -@funindex beamSettings +@funindex baseMoment +@funindex beamExceptions +@funindex beatStructure @funindex measureLength -@funindex beatLength @funindex \time @funindex time @funindex \set @funindex set -The placement of automatic beams is determined by the time signature. -Three types of rules are used for determining the end of automatic -beams: @emph{default} rules -for the time signature, @emph{explicit} rules for the beam in the time -signature, and the @emph{beatLength} for the time signature. +The placement of automatic beams is determined by the context properties +@code{baseMoment}, @code{beatStructure}, @code{beamExceptions}, +and @code{autoBeaming}. The following rules, in order of priority, apply when determining the appearance of beams: @@ -1687,38 +1752,47 @@ as specified, otherwise if @code{\autoBeamOff} is in force do not beam, otherwise @item -if an explicit beam-ending rule is defined for the beam type -in the time signature, use it to determine the valid -places where beams may end, otherwise +if a beam-ending rule is defined in @code{beamExceptions} +for the beam type, use it to determine the valid places where +beams may end, otherwise @item -if a default beam-ending rule is defined in the time signature, -use it to group notes with beams, otherwise +if a beam-ending rule is defined in @code{beamExceptions} +for a larger beam-type, use it to determined the valid places +where beams may end, otherwise @item -use the value of @code{beatLength} to group notes with beams +use the values of @code{baseMoment} and @code{beatStructure} to +determine the ends of the beats in the measure, and +end beams at the end of beats. @end itemize +The beam type is the duration of the shortest note in the beamed group. +If no beam-ending rule is defined for a beam type, the rule for the +smallest beam-type larger than the current beam is used. + @i{@strong{Modifying the grouping of beats}} -By default @code{beatLength} is -derived from the time signature set by the @code{\time} command. -The @code{beatLength} is set to be one over the denominator -of the time signature. +By default @code{baseMoment} is set by the @code{\time} command, +normally to one over the denominator of the time signature. +Any exceptions to this default +can be found in @file{scm/@/time@/-signature@/-settings@/.scm}. +Changing the default value of @code{baseMoment} for a given +time signature is described in @ref{Time signature}. -@code{beatLength} is a @i{moment}, +@code{baseMoment} is a @i{moment}, a unit of musical duration. A quantity of type @i{moment} is created by the scheme function @code{ly:make-moment}. For more information about this function, see @ref{Time administration}. -Autobeam settings are stored in the -@code{beamSettings} property. Default values of @code{beamSettings} -are determined in @file{scm/@/beam@/-settings@/.scm}. Entries in -@code{beamSettings} are indexed by time signature and -rule type. - -Time signature should be a scheme pair , e.g. @code{#'(4 . 4)}. +Special (i.e., other than at the end of the beat) autobeam settings +are stored in the +@code{beamExceptions} property. Default values of @code{beamExceptions} +are established by the @code{\time} command. Default values of +@code{beamExceptions} for a time signature +are determined in @file{scm/@/time@/-signature@/-settings@/.scm}. +Entries in @code{beamExceptions} are indexed by rule type and beam type. Rule type should be @code{#'end} for beam ending. @@ -1734,37 +1808,33 @@ beam type. (beam-type3 . grouping-3)) @end example -Beam type is either a scheme pair indicating the duration -of the beam, e.g. @code{(1 . 16)}, or @code{*} to indicate a -default rule, which applies to all beams if no explicit rule is -defined. +Beam type is a scheme pair indicating the duration +of the beam, e.g., @code{(1 . 16)}. Grouping is a scheme list indicating the grouping to be applied to -the beam. For default rules (where beam type is -@code{*}, the grouping is in units of @code{beatLength}. -For explicit rules, the grouping is in units of the beam type. +the beam. The grouping is in units of the beam type. For reference, the default beaming rules are found in -@file{scm/beam-settings.scm}. +@file{scm/time-signature-settings.scm}. -Beam settings are changed with -@code{\overrideBeamSettings} and @code{\revertBeamSettings}. +Alternate values for @code{beamExceptions} +can be defined using the @code{\set} command. @warning{ -The ending settings must be -@emph{complete} rules. That is, every rule that should apply to -the current time signature must be included in the setting. -It is not possible to change the grouping of only one beam type -for a given time signature. While this may seem cumbersome, +A @code{beamExceptions} value must be +@emph{complete} exceptions list. That is, every exception that should +be applied must be included in the setting. +It is not possible to add, remove, or change only one of the exceptions. +While this may seem cumbersome, it means that the current beaming settings need not be known in order to specify a new beaming pattern.} @lilypond[quote,relative=2,verbatim] \time 5/16 c8^"beats" c16 c8 | -\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3))) +\set beatStructure = #'(2 3) c8^"(2+3)" c16 c8 -\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2))) +\set beatStructure = #'(3 2) c8^"(3+2)" c16 c8 @end lilypond @@ -1773,22 +1843,24 @@ setting is included in a lower-level context, the setting of the enclosing context will apply. @lilypond[quote, verbatim,relative=1] -\new Staff << +\new Staff { \time 7/8 - \new Voice = one { - \relative c'' { - \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2))) + \set Staff.beatStructure = #'(2 3 2) + << + \new Voice = one { + \relative c'' { a8 a a a a a a + } } - } - \new Voice = two { - \relative c' { - \voiceTwo - \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3))) - f8 f f f f f f + \new Voice = two { + \relative c' { + \voiceTwo + \set Voice.beatStructure = #'(1 3 3) + f8 f f f f f f + } } - } ->> + >> +} @end lilypond When multiple voices are used the @code{Staff} context must be @@ -1800,51 +1872,36 @@ staff: % rhythm 3-1-1-2 % Context Voice specified -- does not work correctly % Because of autogenerated voices, all beating will -% be at beatLength (1 . 8) -\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2))) +% be at baseMoment (1 . 8) +\set beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> % Works correctly with context Staff specified -\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2))) +\set Staff.beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> @end lilypond -@funindex revertBeamSettings - -Beam settings can be reverted to get back to default behavior. This -is accomplished by using @code{\revertBeamSettings}. The arguments -are the same as for @code{\overrideBeamSettings}, except no value -for @var{grouping} is given: - -@example -\revertBeamSettings context time-signature rule-type -@end example - +Beam settings can be set back to default behavior. This +is accomplished by setting the time signature. @lilypond[quote,verbatim,relative=2] \time 4/4 \repeat unfold 8 {a8} -% set default rule for (1 1 1 1) grouping -\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1))) +% eliminate beam exception that groups beats 1, 2 and 3, 4 +\set Timing.beamExceptions = #'() \repeat unfold 8 {a8} -% revert the new rule -\revertBeamSettings #'Score #'(4 . 4) #'end +% go back to default behavior +\time 4/4 \repeat unfold 8 {a8} @end lilypond -@predefined -@code{\overrideBeamSettings}, -@code{\revertBeamSettings}. -@endpredefined - - @snippets @cindex beams, subdividing @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{sub-dividing-beams.ly} +{subdividing-beams.ly} @cindex measure groupings @cindex beats, grouping diff --git a/Documentation/pictures/screenshot-denemo-small.png b/Documentation/pictures/screenshot-denemo-small.png index bbcafc4c7c..4bc8d8480d 100644 Binary files a/Documentation/pictures/screenshot-denemo-small.png and b/Documentation/pictures/screenshot-denemo-small.png differ diff --git a/Documentation/pictures/screenshot-denemo.png b/Documentation/pictures/screenshot-denemo.png index 6b337d0709..0ed28cd4fd 100644 Binary files a/Documentation/pictures/screenshot-denemo.png and b/Documentation/pictures/screenshot-denemo.png differ diff --git a/Documentation/snippets/accordion-discant-symbols.ly b/Documentation/snippets/accordion-discant-symbols.ly index 5aed29af14..b9d5d282ba 100644 --- a/Documentation/snippets/accordion-discant-symbols.ly +++ b/Documentation/snippets/accordion-discant-symbols.ly @@ -6,7 +6,7 @@ \header { lsrtags = "keyboards" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los símbolos específicos de acordeón discanto se escriben mediante @code{\\markup}. Se puede trucar la colocación vertical de los @@ -15,7 +15,6 @@ símbolos modificando los argumentos de @code{\\raise}. " doctitlees = "Símbolos de acordeón discanto" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 doctitlede = "Symbole für Akkordeon-Diskantregister" texidocde = " 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 ee99b1ca02..4d1b13676a 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 @@ -6,7 +6,7 @@ \header { lsrtags = "chords, ancient-notation, contexts-and-engravers" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al escribir un bajo cifrado, existe una forma de especificar si queremos que las cifras se sitúen encima o debajo de las notas del @@ -23,7 +23,6 @@ truco se aplique a toda la partitura. " doctitlees = "Añadir un bajo cifrado encima o debajo de las notas" - %% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5 doctitlefr = "Ajout d'une basse chiffrée au-dessus ou au-dessous des notes" diff --git a/Documentation/snippets/adding-ambitus-per-voice.ly b/Documentation/snippets/adding-ambitus-per-voice.ly index 59a8f147f0..3af69f0abf 100644 --- a/Documentation/snippets/adding-ambitus-per-voice.ly +++ b/Documentation/snippets/adding-ambitus-per-voice.ly @@ -6,14 +6,13 @@ \header { lsrtags = "pitches, staff-notation, vocal-music" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Añadir un ámbito por voz" texidoces = " Se puede añadir un ámbito por cada voz. En este caso, el ámbito se debe desplazar manualmente para evitar colisiones. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ambitus können pro Stimme gesetzt werden. In diesem Fall müssen sie @@ -21,7 +20,6 @@ manual verschoben werden, um Zusammenstöße zu verhindern. " doctitlede = "Ambitus pro Stimme hinzufügen" - %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e texidocfr = " L'@code{ambitus} peut être individualisé par voix. Il faut en pareil 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 c11f7bed3b..b4dbc08f0e 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 @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, contexts-and-engravers, breaks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al añadir un pentagrama nuevo en un salto de línea, por desgracia se añade un espacio adicional al final de la línea antes del salto diff --git a/Documentation/snippets/adding-an-extra-staff.ly b/Documentation/snippets/adding-an-extra-staff.ly index b45cdb3c5e..a68d73ba3c 100644 --- a/Documentation/snippets/adding-an-extra-staff.ly +++ b/Documentation/snippets/adding-an-extra-staff.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, contexts-and-engravers" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede añadir (posiblemente de forma temporal) un pentagrama nuevo una vez que la pieza ha comenzado. diff --git a/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly b/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly index fc0e4ee155..7458227d30 100644 --- a/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly +++ b/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para añadir indicaciones de línea divisoria dentro del contexto de los nombres de acorde @code{ChordNames}, incluya el grabador @@ -15,7 +15,6 @@ los nombres de acorde @code{ChordNames}, incluya el grabador " doctitlees = "Añadir barras de compás al contexto de nombres de acorde (ChordNames)" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Um Taktstriche in einem @code{ChordNames}-Kontext anzeigen zu lassen, muss der 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 7a6cce44be..d2fb1a5326 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 @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La sintaxis de LilyPond puede implicar muchas colocaciones poco comunes para los paréntesis, corchetes, etc, que a veces se tienen diff --git a/Documentation/snippets/adding-drum-parts.ly b/Documentation/snippets/adding-drum-parts.ly index accbb94a8c..59bfb51275 100644 --- a/Documentation/snippets/adding-drum-parts.ly +++ b/Documentation/snippets/adding-drum-parts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, percussion" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Mediante la utilización de las potentes herramientas preconfiguradas como la función @code{\\drummode} y el contexto @code{DrumStaff}, la @@ -19,7 +19,6 @@ de líneas. " doctitlees = "Escritura de partes de percusión" - %% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea texidocfr = " Grâce à la puissance des outils préconfigurés tels que la fonction diff --git a/Documentation/snippets/adding-fingerings-to-tablatures.ly b/Documentation/snippets/adding-fingerings-to-tablatures.ly index 0cf1d74581..9444de62d7 100644 --- a/Documentation/snippets/adding-fingerings-to-tablatures.ly +++ b/Documentation/snippets/adding-fingerings-to-tablatures.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.17 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para añadir digitaciones a las tablaturas, utilice una combinación de @code{\\markup} y @code{\\finger}. 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 239b39df1b..070feef2bf 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 @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La función @code{\\parenthesize} es un truco especial que encierra objetos entre paréntesis. El grob asociado es @code{ParenthesesItem}. 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 c738a45fc8..551cf956af 100644 --- a/Documentation/snippets/adding-the-current-date-to-a-score.ly +++ b/Documentation/snippets/adding-the-current-date-to-a-score.ly @@ -6,14 +6,13 @@ \header { lsrtags = "text, titles" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Con algo de código de Scheme, se puede añadir fácilmente la fecha actual a una partitura. " doctitlees = "Añadir la fecha actual a una partitura" - %% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5 texidocfr = " Avec un peu de code Scheme, voici comment ajouter facilement diff --git a/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly b/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly index f46e495676..a5210731fd 100644 --- a/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly +++ b/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly @@ -6,7 +6,7 @@ \header { lsrtags = "repeats" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " El grabador @code{Volta_engraver} reside de forma predeterminada dentro del contexto de @code{Score}, y los corchetes de la repetición @@ -18,7 +18,6 @@ también el fragmento de código @qq{Volta multi staff}. " doctitlees = "Añadir corchetes de primera y segunda vez a más pentagramas" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Der @code{Volta_engraver} befindet sich im @code{Score}-Kontext und Klammern @@ -29,7 +28,6 @@ das \"Volta multi staff\"-Schnipsel. " doctitlede = "Volta-Klammern zu zusätzlichen Systemen hinzufügen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte diff --git a/Documentation/snippets/additional-voices-to-avoid-collisions.ly b/Documentation/snippets/additional-voices-to-avoid-collisions.ly index 9372fed9e1..f5f17704da 100644 --- a/Documentation/snippets/additional-voices-to-avoid-collisions.ly +++ b/Documentation/snippets/additional-voices-to-avoid-collisions.ly @@ -6,7 +6,7 @@ \header { lsrtags = "simultaneous-notes" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Voces adicionales para evitar colisiones" texidoces = " En ciertos casos de polifonía compleja, se necesitan voces adicionales @@ -16,7 +16,6 @@ variable que utiliza la función de Scheme @code{context-spec-music}. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ein einigen Fällen von sehr komplexer polyphoner Musik sind zusätzliche @@ -27,7 +26,6 @@ Stimmen definiert werden, indem eine Variable mit der Funktion " doctitlede = "Zusätzliche Stimmen um Zusammenstöße zu vermeiden" - %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c texidocfr = " Dans certains cas de musique polyphonie complexe, une voix diff --git a/Documentation/snippets/adjusting-grace-note-spacing.ly b/Documentation/snippets/adjusting-grace-note-spacing.ly index 362e56fe18..6637d1bef8 100644 --- a/Documentation/snippets/adjusting-grace-note-spacing.ly +++ b/Documentation/snippets/adjusting-grace-note-spacing.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede ajustar la separación entre las notas de adorno utilizando la propiedad @code{spacing-increment} de @code{Score.GraceSpacing}. diff --git a/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly b/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly index 82450be124..9d55482f52 100644 --- a/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly +++ b/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.16 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este fragmento de código muestra cómo situar la línea de base de la letra más cerca del pentagrama. 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 eba83dcd46..0afab1af69 100644 --- a/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly +++ b/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Puede ser necesario trucar la propiedad @code{shortest-duration-space} para poder ajustar el tamaño de las @@ -15,7 +15,6 @@ caídas y subidas de tono («falls» y «doits»). " doctitlees = "Ajustar la forma de las subidas y caídas de tono" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die @code{shortest-duration-space}-Eigenschaft kann verändert werden, um @@ -23,7 +22,6 @@ das Aussehen von unbestimmten Glissandi anzupassen. " doctitlede = "Das Aussehen von unbestimmten Glissandi anpassen" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " La propriété @code{shortest-duration-space} peut devoir être retouchée diff --git a/Documentation/snippets/aligning-and-centering-instrument-names.ly b/Documentation/snippets/aligning-and-centering-instrument-names.ly index c4f4c1185e..4632b99bf4 100644 --- a/Documentation/snippets/aligning-and-centering-instrument-names.ly +++ b/Documentation/snippets/aligning-and-centering-instrument-names.ly @@ -6,7 +6,7 @@ \header { lsrtags = "text, paper-and-layout, titles" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La alineación horizontal de los nombres de instrumento se puede trucar modificando la propiedad @code{Staff.InstrumentName diff --git a/Documentation/snippets/aligning-bar-numbers.ly b/Documentation/snippets/aligning-bar-numbers.ly index 3e2f3ff700..0b484ec000 100644 --- a/Documentation/snippets/aligning-bar-numbers.ly +++ b/Documentation/snippets/aligning-bar-numbers.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los números de compás se alinean de forma predeterminada por la @@ -20,7 +20,6 @@ alineados por la izquierda con ella. doctitlees = "Alineación de los números de compás" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Taktnummern sind standardmäßig links an ihrem Ursprungsobjet @@ -34,7 +33,6 @@ Taktstrich gesetzt werden. doctitlede = "Taktnummern ausrichten" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Les numéros de mesure s'alignent en principe sur la droite de l'objet diff --git a/Documentation/snippets/aligning-marks-with-various-notation-objects.ly b/Documentation/snippets/aligning-marks-with-various-notation-objects.ly index 7066aa40bc..cae43303e9 100644 --- a/Documentation/snippets/aligning-marks-with-various-notation-objects.ly +++ b/Documentation/snippets/aligning-marks-with-various-notation-objects.ly @@ -6,7 +6,7 @@ \header { lsrtags = "text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Si están especificadas, las marcas de texto se pueden alinear con objetos de notación distintos a las líneas divisorias. Entre estos @@ -22,7 +22,6 @@ debe hacer este ajuste para todos los pentagramas). " doctitlees = "Alinear marcas con varios objetos de notación" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn angegeben, können Textzeichen auch an anderen Objekten als Taktstrichen @@ -39,7 +38,6 @@ diese Einstellung für alle Systeme gemacht werden. " doctitlede = "Zeichen an verschiedenen Notationsobjekten ausrichten" - %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 texidocfr = " Les indications textuelles peuvent s'aligner par rapport à d'autres 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 ed849b174c..997df494c6 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 @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations, fretted-strings, spacing" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las cifras de digitación orientadas verticalmente se colocan de forma @@ -18,7 +18,6 @@ aunque sea una sola nota. " doctitlees = "Permitir que las digitaciones se impriman dentro del pentagrama" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Normalerweise werden vertikal orientierte Fingersatzzahlen außerhalb des Systems @@ -26,7 +25,6 @@ gesetzt. Das kann aber verändert werden. " doctitlede = "Fingersatz auch innerhalb des Systems setzen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " L'empilement des indications de doigté se fait par défaut à l'extérieur diff --git a/Documentation/snippets/altering-the-length-of-beamed-stems.ly b/Documentation/snippets/altering-the-length-of-beamed-stems.ly index b3308425ca..cc12c5707a 100644 --- a/Documentation/snippets/altering-the-length-of-beamed-stems.ly +++ b/Documentation/snippets/altering-the-length-of-beamed-stems.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede variar la longitud de las plicas de las figuras unidas por una barra mediante la sobreescritura de la propiedad diff --git a/Documentation/snippets/ambitus-with-multiple-voices.ly b/Documentation/snippets/ambitus-with-multiple-voices.ly index 006add6eba..7bfcf3f0d9 100644 --- a/Documentation/snippets/ambitus-with-multiple-voices.ly +++ b/Documentation/snippets/ambitus-with-multiple-voices.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches, vocal-music" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Ámbitos con varias voces" texidoces = " La adición del grabador @code{Ambitus_engraver} al contexto de @@ -15,7 +15,6 @@ pentagramas con varias voces. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Indem man den @code{Ambitus_engraver} im @code{Staff}-Kontext @@ -23,7 +22,6 @@ hinzufügt, erhält man einen einzigen Ambitus pro System, auch in dem Fall, dass mehrere Stimmen sich im gleichen System befinden. " doctitlede = "Ambitus mit vielen Stimmen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Si plusieurs voix se trouvent sur une même portée, on peut attribuer le diff --git a/Documentation/snippets/analysis-brackets-above-the-staff.ly b/Documentation/snippets/analysis-brackets-above-the-staff.ly index 1508004bd2..f48e2eba92 100644 --- a/Documentation/snippets/analysis-brackets-above-the-staff.ly +++ b/Documentation/snippets/analysis-brackets-above-the-staff.ly @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " De forma predeterminada se añaden corchetes de análisis sencillos debajo del pentagrama. El ejemplo siguiente muestra una manera de diff --git a/Documentation/snippets/ancient-fonts.ly b/Documentation/snippets/ancient-fonts.ly index 69748635f6..5ed1bc5e19 100644 --- a/Documentation/snippets/ancient-fonts.ly +++ b/Documentation/snippets/ancient-fonts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "ancient-notation" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Aquí se muestran muchos de (¿o quizá todos?) los símbolos que están contemplados por la capacidad de LilyPond para la música @@ -15,7 +15,6 @@ antigua. doctitlees = "Tipografía de música antigua" - %% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea texidocfr =" Voici comment graver la plupart, sinon tous les symboles que diff --git a/Documentation/snippets/ancient-headword.ly b/Documentation/snippets/ancient-headword.ly index 78d901b873..72ad5d5ae6 100644 --- a/Documentation/snippets/ancient-headword.ly +++ b/Documentation/snippets/ancient-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" #(set-global-staff-size 15) \paper { 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 c2b8bda91f..83c04e7163 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 @@ -6,7 +6,7 @@ \header { lsrtags = "ancient-notation, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este ejemplo muestra cómo hacer una transcripción moderna de canto gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza @@ -16,7 +16,6 @@ especiales que indican silencios de distintas longitudes. " doctitlees = "Plantilla para notación de música antigua (transcripción moderna de canto gregoriano)" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " @@ -27,7 +26,6 @@ Länge von Pausen an. " doctitlede = "Vorlage für Alte Notation -- moderne Transkription des gregorianischen Chorals" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Voici comment vous pourriez transcrire du grégorien. Pour mémoire, il 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 addee581fc..b288ebfd56 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 @@ -6,7 +6,7 @@ \header { lsrtags = "ancient-notation, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al transcribir música mensural, es útil un «incipit» al compienzo de la pieza para indicar la tonalidad y el tempo @@ -21,7 +21,6 @@ encima de ellos. " doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein @@ -36,7 +35,6 @@ zwischen den Systemen geschrieben. doctitlede = "Vorlage für Alte Notation -- moderne Transkription von Mensuralmusik" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Lorsque l'on transcrit de la musique mensurale, un @emph{incipit} permet diff --git a/Documentation/snippets/ancient-time-signatures.ly b/Documentation/snippets/ancient-time-signatures.ly index c3285e3921..fd24955917 100644 --- a/Documentation/snippets/ancient-time-signatures.ly +++ b/Documentation/snippets/ancient-time-signatures.ly @@ -6,7 +6,7 @@ \header { lsrtags = "ancient-notation" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las indicaciones de compás también se pueden grabar en estilo antiguo. 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 faa5ebc0cf..5d51865c90 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 @@ -6,7 +6,7 @@ \header { lsrtags = "pitches, editorial-annotations" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Aplicar estilos de cabeza según la nota de la escala" texidoces = " La propiedad @code{shapeNoteStyles} se puede usar para definir varios @@ -30,7 +30,6 @@ nota. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 doctitlede = "Notenkopfstile basierend auf der Tonleiterstufe erstellen" texidocde = " @@ -52,7 +51,6 @@ eine Melodie transponieren kann, ohne dass das Verhältnis zwischen den harmonischen Funktionen und dem Notenstil verloren geht. " - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " La propriété @code{shapeNoteStyles} permet d'affecter un profil diff --git a/Documentation/snippets/arabic-improvisation.ly b/Documentation/snippets/arabic-improvisation.ly index 0cb22574d7..2bc07c8f6c 100644 --- a/Documentation/snippets/arabic-improvisation.ly +++ b/Documentation/snippets/arabic-improvisation.ly @@ -6,7 +6,7 @@ \header { lsrtags = "world-music" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para las improvisaciones o @emph{taqasim} que son libres durante unos momentos, se puede omitir la indicación de compás y se puede usar @@ -18,7 +18,6 @@ cómo podría ser el comienzo de una improvisación @emph{hijaz}: " doctitlees = "Improvisación de música árabe" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Bei Improvisation oder @emph{taqasim}, die zeitlich frei gespielt diff --git a/Documentation/snippets/asymmetric-slurs.ly b/Documentation/snippets/asymmetric-slurs.ly index 10686dad99..26aab426c0 100644 --- a/Documentation/snippets/asymmetric-slurs.ly +++ b/Documentation/snippets/asymmetric-slurs.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede hacer que una ligadura de expresión sea asimétrica para adaptarse mejor a un patrón asimétrico de notas. diff --git a/Documentation/snippets/automatic-beam-subdivisions.ly b/Documentation/snippets/automatic-beam-subdivisions.ly index b1cd37cfe4..d77e6e1c20 100644 --- a/Documentation/snippets/automatic-beam-subdivisions.ly +++ b/Documentation/snippets/automatic-beam-subdivisions.ly @@ -1,12 +1,11 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. -\version "2.13.20" +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.29 +\version "2.13.29" \header { - lsrtags = "rhythms" - -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden subdividir las barras automáticamente. Estableciendo la propiedad @code{subdivideBeams}, las barras se subdividen en @@ -15,15 +14,18 @@ posiciones de pulso (tal y como se especifica en @code{beatLength}). " doctitlees = "Subdivisiones de barra automáticas" + lsrtags = "rhythms" + texidoc = " Beams can be subdivided automatically. By setting the property @code{subdivideBeams}, beams are subdivided at beat positions (as -specified in @code{beatLength}). +specified in @code{baseMoment}). " doctitle = "Automatic beam subdivisions" } % begin verbatim + \new Staff { \relative c'' { << @@ -40,10 +42,12 @@ specified in @code{beatLength}). } >> \oneVoice - \set beatLength = #(ly:make-moment 1 8) - b32^"beatLength 1 8"[ a g f c' b a g] - \set beatLength = #(ly:make-moment 1 16) - b32^"beatLength 1 16"[ a g f c' b a g] + \set baseMoment = #(ly:make-moment 1 8) + \set beatStructure = #'(2 2 2 2) + b32^"baseMoment 1 8"[ a g f c' b a g] + \set baseMoment = #(ly:make-moment 1 16) + \set beatStructure = #'(4 4 4 4) + b32^"baseMoment 1 16"[ a g f c' b a g] } } diff --git a/Documentation/snippets/beam-endings-in-score-context.ly b/Documentation/snippets/beam-endings-in-score-context.ly index f1902be452..869384b083 100644 --- a/Documentation/snippets/beam-endings-in-score-context.ly +++ b/Documentation/snippets/beam-endings-in-score-context.ly @@ -1,11 +1,11 @@ % Do not edit this file; it is automatically % generated from Documentation/snippets/new % This file is in the public domain. -%% Note: this file works from version 2.13.4 -\version "2.13.20" +%% Note: this file works from version 2.13.29 +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las reglas de final de barra especificadas en el contexto @code{Score} se aplican a todos los pentagramas, pero se pueden @@ -38,7 +38,7 @@ moduler au niveau @code{Staff} ou @code{Voice} : lsrtags = "rhythms" texidoc = " -Beam-ending rules specified in the @code{Score} context apply to all +Beat structure rules specified in the @code{Score} context apply to all staves, but can be modified at both @code{Staff} and @code{Voice} levels: " @@ -49,18 +49,15 @@ levels: \relative c'' { \time 5/4 % Set default beaming for all staves - \overrideBeamSettings #'Score #'(5 . 4) #'end - #'(((1 . 8) . (3 4 3)) - ((1 . 16) . (6 8 6)) - ((1 . 32) . (12 16 12))) + \set Score.baseMoment = #(ly:make-moment 1 8) + \set Score.beatStructure = #'(3 4 3) << \new Staff { c8 c c c c c c c c c } \new Staff { % Modify beaming for just this staff - \overrideBeamSettings #'Staff #'(5 . 4) #'end - #'((* . (3 2))) + \set Staff.beatStructure = #'(6 4) c8 c c c c c c c c c } \new Staff { @@ -73,8 +70,7 @@ levels: % Modify beaming for this voice only \new Voice { \voiceTwo - \overrideBeamSettings #'Voice #'(5 . 4) #'end - #'((* . (3 2))) + \set Voice.beatStructure = #'(6 4) a8 a a a a a a a a a } >> diff --git a/Documentation/snippets/beam-grouping-in-7-8-time.ly b/Documentation/snippets/beam-grouping-in-7-8-time.ly index e278635b28..d7ffd2df8d 100644 --- a/Documentation/snippets/beam-grouping-in-7-8-time.ly +++ b/Documentation/snippets/beam-grouping-in-7-8-time.ly @@ -1,11 +1,11 @@ % Do not edit this file; it is automatically % generated from Documentation/snippets/new % This file is in the public domain. -%% Note: this file works from version 2.13.4 -\version "2.13.20" +%% Note: this file works from version 2.13.29 +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " No está especificada ninguna agrupación predeterminada automática de las barras para el compás de 7/8, de forma que si se requieren @@ -40,10 +40,10 @@ il faudra donc définir les terminaisons de 2/8 et 5/8 : lsrtags = "rhythms" texidoc = " -There are no default automatic beam groupings specified for 7/8 time, -so if automatic beams are required the grouping must be specified. For -example, to group all beams 2-3-2 in 7/8 time, specify beam endings at -2/8 and 5/8: +There is no default beat structure specified for 7/8 time, +so if automatic beams are required the structure must be specified. For +example, to group all beams 2-3-2 in 7/8 time, specify the +beat structure to be (2 3 2): " doctitle = "Beam grouping in 7/8 time" } % begin verbatim @@ -53,7 +53,6 @@ example, to group all beams 2-3-2 in 7/8 time, specify beam endings at \time 7/8 % rhythm 2-3-2 a8 a a a a a a - \overrideBeamSettings #'Score #'(7 . 8) #'end - #'((* . (2 3 2))) + \set Score.beatStructure = #'(2 3 2) a8 a a a a a a } diff --git a/Documentation/snippets/beams-across-line-breaks.ly b/Documentation/snippets/beams-across-line-breaks.ly index f77f3b9d56..c6a340b4d4 100644 --- a/Documentation/snippets/beams-across-line-breaks.ly +++ b/Documentation/snippets/beams-across-line-breaks.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Normalmente están prohibidos los saltos de línea si las barras atraviesan las líneas divisorias. Se puede cambiar este @@ -15,7 +15,6 @@ comportamiento como se muestra aquí: " doctitlees = "Barras que atraviesan saltos de línea" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Zeilenumbrüche sind normalerweise während Balken verboten. Das kann geändert @@ -25,7 +24,6 @@ werden. doctitlede = "Balken über Zeilenumbrüche" - %% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 texidocfr = " 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 67cb8b8f44..a9b23f7c45 100644 --- a/Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly +++ b/Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La instrucción @code{\\whiteout} intercala un rectángulo blanco debajo de un elemento de marcado. Este rectángulo blanco no tapa diff --git a/Documentation/snippets/broken-crescendo-hairpin.ly b/Documentation/snippets/broken-crescendo-hairpin.ly index 225fe0be3d..95d41d6bea 100644 --- a/Documentation/snippets/broken-crescendo-hairpin.ly +++ b/Documentation/snippets/broken-crescendo-hairpin.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para hacer invisibles partes de un regulador de crescendo, se usa el método de dibujar un rectángulo blanco encima de la parte diff --git a/Documentation/snippets/caesura-railtracks-with-fermata.ly b/Documentation/snippets/caesura-railtracks-with-fermata.ly index db5ab31de5..bbed0a5cbf 100644 --- a/Documentation/snippets/caesura-railtracks-with-fermata.ly +++ b/Documentation/snippets/caesura-railtracks-with-fermata.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " A veces se denota una «cesura» mediante una doble marca de respiración parecida a las vías del tren, con un calderón encima. Este fragmento diff --git a/Documentation/snippets/center-text-below-hairpin-dynamics.ly b/Documentation/snippets/center-text-below-hairpin-dynamics.ly index 790bfc667c..6dd44c7e04 100644 --- a/Documentation/snippets/center-text-below-hairpin-dynamics.ly +++ b/Documentation/snippets/center-text-below-hairpin-dynamics.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este ejemplo proporciona una función para tipografiar un regulador con texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra diff --git a/Documentation/snippets/centering-markup-on-note-heads-automatically.ly b/Documentation/snippets/centering-markup-on-note-heads-automatically.ly index f970c255f2..36fb7ffc49 100644 --- a/Documentation/snippets/centering-markup-on-note-heads-automatically.ly +++ b/Documentation/snippets/centering-markup-on-note-heads-automatically.ly @@ -1,48 +1,68 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. -\version "2.13.20" +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.15 +\version "2.13.29" \header { - lsrtags = "text, tweaks-and-overrides" - + lsrtags = "text, tweaks-and-overrides, contexts-and-engravers" texidoc = " For technical reasons, text scripts attached to note heads cannot easily be centered on a note head's width, unlike articulations. -Instead of using trial-and-error offset tweaks, this snippet accesses a -note head (or rest) from the @code{TextScript} object's horizontal -parent (a paper column), using its extent to correct the positioning. - - - +Instead of using trial-and-error offset tweaks, this snippet uses a +Scheme engraver to reset the horizontal parent of each markup to a +@code{NoteColumn}. This also allows text to follow note heads which have +been shifted via @code{force-hshift}. " doctitle = "Centering markup on note heads automatically" } % begin verbatim -textScriptCenterOnNote = \override TextScript #'X-offset = -#(lambda (grob) - (let* ((paper-col (ly:grob-parent grob X)) - (elts (ly:grob-object paper-col 'elements)) - (rhythmic-head grob)) - - (for-each - (lambda (idx) - (let ((elt (ly:grob-array-ref elts idx))) - (if (grob::has-interface elt - 'rhythmic-grob-interface) - (set! rhythmic-head elt)))) - (reverse (iota (ly:grob-array-length elts)))) - - (+ - (ly:self-alignment-interface::x-aligned-on-self grob) - (interval-center - (ly:grob-robust-relative-extent rhythmic-head rhythmic-head X))))) - -\relative c' { - \override TextScript #'self-alignment-X = #CENTER - \textScriptCenterOnNote - 1-\markup \arrow-head #Y #UP ##t - 1-\markup \huge "^" + +#(define (Text_align_engraver ctx) + (let ((scripts '()) + (note-column #f)) + + `((acknowledgers + (note-column-interface + . ,(lambda (trans grob source) + ;; cache NoteColumn in this Voice context + (set! note-column grob))) + + (text-script-interface + . ,(lambda (trans grob source) + ;; whenever a TextScript is acknowledged, + ;; add it to `scripts' list + (set! scripts (cons grob scripts))))) + + (stop-translation-timestep + . ,(lambda (trans) + ;; if any TextScript grobs exist, + ;; set NoteColumn as X-parent + (and (pair? scripts) + (for-each (lambda (script) + (set! (ly:grob-parent script X) note-column)) + scripts)) + ;; clear scripts ready for next timestep + (set! scripts '())))))) + +\layout { + \context { + \Voice + \consists #Text_align_engraver + \override TextScript #'X-offset = + #ly:self-alignment-interface::aligned-on-x-parent + \override TextScript #'self-alignment-X = #CENTER + } } +\new Staff << + \relative c'' { + \override NoteColumn #'force-hshift = #3 + c1-\markup { \arrow-head #Y #DOWN ##t } + } + \\ + \relative c' { + a4 a-\markup { \huge ^ } a a + } +>> diff --git a/Documentation/snippets/changing--flageolet-mark-size.ly b/Documentation/snippets/changing--flageolet-mark-size.ly index 0a90b3930f..f2da53a6e7 100644 --- a/Documentation/snippets/changing--flageolet-mark-size.ly +++ b/Documentation/snippets/changing--flageolet-mark-size.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, unfretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para hacer más pequeño el círculo de @code{\\flageolet} (armónico) utilice la siguiente función de Scheme. @@ -14,7 +14,6 @@ utilice la siguiente función de Scheme. " doctitlees = "Cambiar el tamaño de la marca de \\flageolet" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Um den @code{\\flageolet}-Kreis kleiner zu machen, kann diese @@ -22,7 +21,6 @@ Scheme-Funktion eingesetzt werden. " doctitlede = "\\flageolet-Zeichen verkleinern" - %% Translation of GIT committish: 5b980ee07bba23d3633de1d371fb2926f164e295 texidocfr = " 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 ffc65f29ee..1f515792df 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 @@ -6,7 +6,7 @@ \header { lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden modificar notas individuales de un acorde con la instrucción @code{\\tweak}, alterando la propiedad @code{font-size}. diff --git a/Documentation/snippets/changing-beam-knee-gap.ly b/Documentation/snippets/changing-beam-knee-gap.ly index c593157cfe..f6326f4201 100644 --- a/Documentation/snippets/changing-beam-knee-gap.ly +++ b/Documentation/snippets/changing-beam-knee-gap.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se insertan automáticamente barras en ángulo cuando se detecta un intervalo muy grande entre las notas. Se puede hacer un ajuste @@ -20,7 +20,6 @@ establecido a 5.5 espacios de pentagrama. " doctitlees = "Cambiar el salto de las barras en ángulo" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Balken mit Hälsen in unterschiedliche Richtungen werden automatisch @@ -35,7 +34,6 @@ Standardwert von @code{auto-knee-gap} ist 5.5 Notensystemabstände. doctitlede = "Balken für weit auseinander liegende Noten ändern" - %% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 texidocfr = " LilyPond insère automatiquement des ligatures coudées --- certaines diff --git a/Documentation/snippets/changing-chord-separator.ly b/Documentation/snippets/changing-chord-separator.ly index df58cf2f0c..43b5644f26 100644 --- a/Documentation/snippets/changing-chord-separator.ly +++ b/Documentation/snippets/changing-chord-separator.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede establecer el separador entre las distintas partes del nombre de un acorde para que sea cualquier elemento de marcado. @@ -14,7 +14,6 @@ nombre de un acorde para que sea cualquier elemento de marcado. " doctitlees = "Modificación del separador de acordes" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Der Trenner zwischen unterschiedlichen Teilen eines Akkordsymbols kann diff --git a/Documentation/snippets/changing-form-of-multi-measure-rests.ly b/Documentation/snippets/changing-form-of-multi-measure-rests.ly index 28632a4b2c..c62ee24d44 100644 --- a/Documentation/snippets/changing-form-of-multi-measure-rests.ly +++ b/Documentation/snippets/changing-form-of-multi-measure-rests.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Cambiar la forma de los silencios multicompás" texidoces = " Si hay diez compases de silencio o menos, se imprime en el pentagrama @@ -17,7 +17,6 @@ puede cambiar sobreescribiendo la propiedad @code{expand-limit}: " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn zehn oder weniger Pausentakte vorkommen, wird eine Reihe von Longa- @@ -29,7 +28,6 @@ setzt: doctitlede = "Die Erscheinung von Pausentakten ändern" - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur 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 e9aa57fc77..fc44d16399 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 @@ -6,7 +6,7 @@ \header { lsrtags = "contexts-and-engravers, midi" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al producir una salida MIDI, el comportamiento predeterminado es que cada pentagrama representa un canal MIDI, con todas las voces diff --git a/Documentation/snippets/changing-partcombine-texts.ly b/Documentation/snippets/changing-partcombine-texts.ly index 79fd35797f..d3b59d0ffe 100644 --- a/Documentation/snippets/changing-partcombine-texts.ly +++ b/Documentation/snippets/changing-partcombine-texts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "simultaneous-notes" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al utilizar la posibilidad de combinación automática de partes, se puede modificar el texto que se imprime para las secciones de solo @@ -15,7 +15,6 @@ y de unísono: " doctitlees = "Cambiar los textos de partcombine" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn Stimmen automatisch kombiniert werden, kann der Text, der für @@ -23,7 +22,6 @@ Solo- und Unisono-Stellen ausgegeben wird, geändert werden: " doctitlede = "Partcombine-Text ändern" - %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c texidocfr = " Lorsque vous regroupez automatiquement des parties, vous pouvez 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 70eceb80a5..de280cbfc2 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 @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede modificar el texto empleado para los crescendos y decrescendos modificando las propiedades de contexto @@ -21,7 +21,6 @@ valores posibles se encuentran @code{'line} (línea), " doctitlees = "Cambiar el texto y los estilos de objeto de extensión para las indicaciones dinámicas textuales" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Der Text, der für Crescendo und Decrescendo gestzt wird, kann geändert @@ -33,7 +32,6 @@ geändert werden, indem die @code{'style}-Eigenschaft des und @code{'dotted-line}. " doctitlede = "Text und Strecker-Stile für Dynamik-Texte ändern" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Le texte par défaut des crescendos et decrescendos se change en diff --git a/Documentation/snippets/changing-the-ambitus-gap.ly b/Documentation/snippets/changing-the-ambitus-gap.ly new file mode 100644 index 0000000000..3cc767fb40 --- /dev/null +++ b/Documentation/snippets/changing-the-ambitus-gap.ly @@ -0,0 +1,45 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.26 +\version "2.13.29" +\header { + lsrtags = "pitches" + texidoc = "It is possible to change the default gap setting for +ambitus." + + doctitle = "Changing the ambitus gap" +} % begin verbatim + + + +\layout { + \context { + \Voice + \consists "Ambitus_engraver" + } +} + +\new Staff { + \time 2/4 + % Default setting + c'4 g'' +} + +\new Staff { + \time 2/4 + \override AmbitusLine #'gap = #0 + c'4 g'' +} + +\new Staff { + \time 2/4 + \override AmbitusLine #'gap = #1 + c'4 g'' +} + +\new Staff { + \time 2/4 + \override AmbitusLine #'gap = #1.5 + c'4 g'' +} 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 6e6ec2808f..af66e4dc46 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 @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, editorial-annotations" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede cambiar el aspecto de las ligaduras de expresión de continuas a punteadas o intermitentes. diff --git a/Documentation/snippets/changing-the-breath-mark-symbol.ly b/Documentation/snippets/changing-the-breath-mark-symbol.ly index fe75153a16..e9fe0b10b4 100644 --- a/Documentation/snippets/changing-the-breath-mark-symbol.ly +++ b/Documentation/snippets/changing-the-breath-mark-symbol.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " El glifo de la marca de respiración se puede ajustar sobreescribiendo la propiedad de texto del objeto de presentación @@ -15,7 +15,6 @@ sobreescribiendo la propiedad de texto del objeto de presentación " doctitlees = "Cambiar el símbolo de la marca de respiración" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Das Schriftzeichen für das Atemzeichen kann verändert werden, indem @@ -24,7 +23,6 @@ beliebigen Textbeschriftung definiert wird. " doctitlede = "Das Atemzeichen-Symbol verändern" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " On peut choisir le glyphe imprimé par cette commande, en modifiant la 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 4a8d07fe85..22b2321947 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 @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La nomenclatura inglesa (predeterminada) para los acordes del cifrado americano se puede cambiar por la alemana (@code{\\germanChords} diff --git a/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly b/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly new file mode 100644 index 0000000000..b11d748655 --- /dev/null +++ b/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly @@ -0,0 +1,38 @@ +%% Do not edit this file; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% This file is in the public domain. +\version "2.13.20" + +\header { + lsrtags = "pitches" + + texidoc = " +@code{staffLineLayoutFunction} is used to change the position of notes. +This snippet shows setting its value to @code{ly:pitch-semitones} in +order to produce a chromatic scale with the distance between each space +and line of the stave equal to one semitone. + +" + doctitle = "Changing the interval of lines on the stave" +} % begin verbatim + +scale = \relative c' { + a4 ais b c + cis4 d dis e + f4 fis g gis + a1 +} + +\new Staff \with { + \remove "Accidental_engraver" + staffLineLayoutFunction = #ly:pitch-semitones +} +{ + << + \scale + \context NoteNames { + \set printOctaveNames = ##f + \scale + } + >> +} diff --git a/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly b/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly new file mode 100644 index 0000000000..7d5703d6ad --- /dev/null +++ b/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly @@ -0,0 +1,22 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.26 +\version "2.13.29" +\header { + lsrtags = "rhythms,expressive-marks" + texidoc = "This code demonstrates how to change the number of +augmentation dots on a single note." + doctitle = "Changing the number of augmentation dots per note" +} % begin verbatim + + +\relative c' { + c4.. a16 r2 | + \override Dots #'dot-count = #4 + c4.. a16 r2 | + \override Dots #'dot-count = #0 + c4.. a16 r2 | + \revert Dots #'dot-count + c4.. a16 r2 | +} 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 e1aab8394a..97a89e5f55 100644 --- a/Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly +++ b/Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las alteraciones y los signos «más» pueden aparecer antes o después de los números, según el valor de las propiedades @@ -16,7 +16,6 @@ después de los números, según el valor de las propiedades " doctitlees = "Cambiar las posiciones de las alteraciones del bajo cifrado" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Versetzungszeichen und Pluszeichen können vor oder nach den Ziffern erscheinen, 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 a2a297d2af..d415b4ea1c 100644 --- a/Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly +++ b/Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, midi" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para cambiar el tempo en la salida MIDI sin imprimir nada, hacemos invisible la indicación metronómica: @@ -15,7 +15,6 @@ imprimir nada, hacemos invisible la indicación metronómica: doctitlees = "Cambiar el tempo sin indicación metronómica" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Um das Tempo für die MIDI-Ausgabe zu ändern, ohne eine Tempoangabe in den @@ -24,7 +23,6 @@ Noten auszugeben, kann die Metronombezeichnung unsichtbar gemacht werden: " doctitlede = "Das Tempo ohne Metronom-Angabe verändern" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Vous pouvez indiquer un changement de tempo pour le fichier MIDI sans diff --git a/Documentation/snippets/changing-the-text-for-sustain-markings.ly b/Documentation/snippets/changing-the-text-for-sustain-markings.ly index c1d4ebb45f..f649c157cc 100644 --- a/Documentation/snippets/changing-the-text-for-sustain-markings.ly +++ b/Documentation/snippets/changing-the-text-for-sustain-markings.ly @@ -6,7 +6,7 @@ \header { lsrtags = "keyboards, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de las indicaciones de pisar pedal y levantar pedal. Observe que las 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 index 7d9f6e4722..ed0cd298aa 100644 --- a/Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly +++ b/Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.5 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La instrucción @code{\\time} establece las propiedades @code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y diff --git a/Documentation/snippets/changing-the-tuplet-number.ly b/Documentation/snippets/changing-the-tuplet-number.ly index fac3e60ae5..652d04d4e3 100644 --- a/Documentation/snippets/changing-the-tuplet-number.ly +++ b/Documentation/snippets/changing-the-tuplet-number.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Cambiar el número del grupo especial" texidoces = " @@ -18,7 +18,6 @@ del grupo, o eliminar el número. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Standardmäßig wird nur der Zähler des N-tolen-Bruchs über der Klammer @@ -30,7 +29,6 @@ vollständig unterdrücken. doctitlede = "Die Zahl der N-tole verändern" - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " L'apparence du chiffre est déterminée par la propriété @code{text} dans 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 f17a74165d..301d0ab140 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 @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, contexts-and-engravers" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La propiedad @code{measureLength}, junto con @code{measurePosition}, determina cuándo es necesario dibujar una diff --git a/Documentation/snippets/chant-or-psalms-notation.ly b/Documentation/snippets/chant-or-psalms-notation.ly index 5b1cbe6eca..852089e0db 100644 --- a/Documentation/snippets/chant-or-psalms-notation.ly +++ b/Documentation/snippets/chant-or-psalms-notation.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este tipo de notación se utiliza para el canto de los Salmos, en que las estrofas no siempre tienen la misma longitud. diff --git a/Documentation/snippets/chord-name-exceptions.ly b/Documentation/snippets/chord-name-exceptions.ly index 234eeb50d6..016adfc504 100644 --- a/Documentation/snippets/chord-name-exceptions.ly +++ b/Documentation/snippets/chord-name-exceptions.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede usar la propiedad @code{chordNameExceptions} para almacenar una lista de notaciones espaciales para acordes @@ -15,7 +15,6 @@ específicos. " doctitlees = "Excepciones para los nombres de acorde" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Eigenschaft @code{chordNameExceptions} kann benutzt werden, um eine diff --git a/Documentation/snippets/chord-name-major7.ly b/Documentation/snippets/chord-name-major7.ly index 8c654e64d2..144d34f613 100644 --- a/Documentation/snippets/chord-name-major7.ly +++ b/Documentation/snippets/chord-name-major7.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La presentación del acorde de séptima mayor se puede ajustar mediante majorSevenSymbol. @@ -14,7 +14,6 @@ puede ajustar mediante majorSevenSymbol. " doctitlees = "Nombre de acorde maj7" - %% Translation of GIT committish: 134d9cb2e14ae624aec6fa2dd1630e284807dc42 texidocde = " Das Aussehen des großen Septakkords kann mit @code{majorSevenSymbol} verändert werden. diff --git a/Documentation/snippets/chordchanges-for-fretboards.ly b/Documentation/snippets/chordchanges-for-fretboards.ly index d87d26da8c..2ba6b2f5be 100644 --- a/Documentation/snippets/chordchanges-for-fretboards.ly +++ b/Documentation/snippets/chordchanges-for-fretboards.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.0 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede hacer que los diagramas de posiciones se muestren sólo cuando el acorde cambia o al comienzo de una nueva línea. diff --git a/Documentation/snippets/chords-headword.ly b/Documentation/snippets/chords-headword.ly index 13c85d253f..71702df05c 100644 --- a/Documentation/snippets/chords-headword.ly +++ b/Documentation/snippets/chords-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" #(set-global-staff-size 15) \paper { ragged-right = ##f diff --git a/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly b/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly new file mode 100644 index 0000000000..2033c42fd3 --- /dev/null +++ b/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly @@ -0,0 +1,25 @@ +%% Do not edit this file; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% This file is in the public domain. +\version "2.13.20" + +\header { + lsrtags = "pitches" + + texidoc = " +Clefs can be transposed by arbitrary amounts, not just by octaves. + +" + doctitle = "Clefs can be transposed by arbitrary amounts" +} % begin verbatim + +\relative c' { + \clef treble + c4 c c c + \clef "treble_8" + c4 c c c + \clef "treble_5" + c4 c c c + \clef "treble^3" + c4 c c c +} diff --git a/Documentation/snippets/clip-systems.ly b/Documentation/snippets/clip-systems.ly index 9748838cfa..ed9b437efd 100644 --- a/Documentation/snippets/clip-systems.ly +++ b/Documentation/snippets/clip-systems.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este código muestra cómo recortar (extraer) fragmentos a partir de una partitura completa. diff --git a/Documentation/snippets/clusters.ly b/Documentation/snippets/clusters.ly index 42c479180a..02fe2e85ed 100644 --- a/Documentation/snippets/clusters.ly +++ b/Documentation/snippets/clusters.ly @@ -6,7 +6,7 @@ \header { lsrtags = "simultaneous-notes, chords, keyboards" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los «clusters» o racimos son un mecanismo para indicar la interpretación de un ámbito de notas al mismo tiempo. diff --git a/Documentation/snippets/combining-dynamics-with-markup-texts.ly b/Documentation/snippets/combining-dynamics-with-markup-texts.ly index 5f4b906c4e..b65604f4ba 100644 --- a/Documentation/snippets/combining-dynamics-with-markup-texts.ly +++ b/Documentation/snippets/combining-dynamics-with-markup-texts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più forte} o @qq{piano subito}). Se pueden producir usando un bloque 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 88deec7b85..b4bcb34477 100644 --- a/Documentation/snippets/combining-two-parts-on-the-same-staff.ly +++ b/Documentation/snippets/combining-two-parts-on-the-same-staff.ly @@ -6,7 +6,7 @@ \header { lsrtags = "simultaneous-notes, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La herramienta de combinación de partes (instrucción @@ -28,7 +28,6 @@ textos. " doctitlees = "Combinar dos partes sobre el mismo pentagrama" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Funktion, die Stimmen kombiniert (also der @code{\\partcombine}-Befehl) @@ -48,7 +47,6 @@ kombinieren: Standardpolyphonie, @code{\\partcombine} ohne Text und " doctitlede = "Zwei Stimmen auf einem System kombinieren" - %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c texidocfr = " L'outil de combinaison de parties (la commande @code{\\partcombine}) diff --git a/Documentation/snippets/compound-time-signatures.ly b/Documentation/snippets/compound-time-signatures.ly index ef1603b150..bd00f68e29 100644 --- a/Documentation/snippets/compound-time-signatures.ly +++ b/Documentation/snippets/compound-time-signatures.ly @@ -1,11 +1,11 @@ % Do not edit this file; it is automatically % generated from Documentation/snippets/new % This file is in the public domain. -%% Note: this file works from version 2.13.4 -\version "2.13.20" +%% Note: this file works from version 2.13.29 +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Indicaciones de compases compuestos" texidoces = " Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden @@ -68,8 +68,7 @@ database.) \relative c' { \override Staff.TimeSignature #'stencil = #(compound-time "2" "3" "8") \time 5/8 - \overrideBeamSettings #'Staff #'(5 . 8) #'end - #'((* . (2 3))) + \set Staff.beatStructure = #'(2 3) c8 d e fis gis c8 fis, gis e d c8 d e4 gis8 diff --git a/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly b/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly index 07f1c31820..7ab1b0d703 100644 --- a/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly +++ b/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly @@ -1,11 +1,11 @@ % Do not edit this file; it is automatically % generated from Documentation/snippets/new % This file is in the public domain. -%% Note: this file works from version 2.13.4 -\version "2.13.20" +%% Note: this file works from version 2.13.29 +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La agrupación de pulsos dentro de un compás está controlada por la agrupación predeterminada que se establece en @code{beamSettings}. @@ -66,29 +66,39 @@ règles par défaut contenues dans le fichier @w{@code{scm/beam-settings.scm}}. lsrtags = "rhythms" texidoc = " -Beat grouping within a bar is controlled by the default grouping -established in @code{beamSettings}. This grouping can be established -by the use of @code{\\overrideBeamSettings}. Alternatively, the +Beat grouping within a measure is controlled by the context property +@code{beatStructure}. Values of @code{beatStructure} are +established for many time signatures in +@file{scm/time-signature-settings.scm}. Values of @code{beatStructure} +can be changed or set with @code{\set}. +Alternatively, the Scheme function @code{set-time-signature} can be used to both -set the time signature and establish the default grouping rule. +set the time signature and establish the beat structure. @code{set-time-signature}, takes three arguments: the number of beats, the beat length, and the internal grouping of beats in -the measure. If the @code{Measure_grouping_engraver} is included +the measure. @code{\time} and @code{set-time-signature} both apply +to the @code{Timing} context, so they will not reset values of +@code{beatStructure} or @code{baseMoment} that are set in +other lower-level contexts, such as @code{Voice}. + +If the @code{Measure_grouping_engraver} is included in one of the display contexts, measure grouping signs will be created. Such signs ease reading rhythmically complex modern music. In the example, the 9/8 measure is grouped in two different patterns using the two different methods, while the 5/8 measure is grouped according to the default setting in -@file{scm/beam-settings.scm}: +@file{scm/time-signature-settings.scm}: " doctitle = "Conducting signs measure grouping signs" } % begin verbatim + \score { - \relative c'' { + \new Voice \relative c'' { \time 9/8 - \overrideBeamSettings #'Score #'(9 . 8) #'end #'((* . (2 2 2 3))) + g8 g d d g g a( bes g) | + \set Timing.beatStructure = #'(2 2 2 3) g8 g d d g g a( bes g) | #(set-time-signature 9 8 '(4 5)) g8 g d d g g a( bes g) | diff --git a/Documentation/snippets/contemporary-glissando.ly b/Documentation/snippets/contemporary-glissando.ly index 249400ac1d..8d5f4d66fe 100644 --- a/Documentation/snippets/contemporary-glissando.ly +++ b/Documentation/snippets/contemporary-glissando.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede tipografiar un gissando contemporáneo sin nota final utilizando una nota oculta y temporalización de cadenza. @@ -14,7 +14,6 @@ utilizando una nota oculta y temporalización de cadenza. " doctitlees = "Glissando contemporáneo" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ein modernes Glissando ohne eine Endnote kann gesetzt werden, indem @@ -22,7 +21,6 @@ eine Kadenz eingesetzt wird und die Endnote unsichtbar gemacht wird. " doctitlede = "Moderne Glissandi" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " De nos jours, il peut arriver que la note d'arrivée d'un glissando soit diff --git a/Documentation/snippets/contexts-and-engravers.snippet-list b/Documentation/snippets/contexts-and-engravers.snippet-list index 14f4245313..2b4356606f 100644 --- a/Documentation/snippets/contexts-and-engravers.snippet-list +++ b/Documentation/snippets/contexts-and-engravers.snippet-list @@ -1,15 +1,16 @@ adding-a-figured-bass-above-or-below-the-notes.ly adding-an-extra-staff-at-a-line-break.ly adding-an-extra-staff.ly +centering-markup-on-note-heads-automatically.ly changing-midi-output-to-one-channel-per-voice.ly changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly chant-or-psalms-notation.ly creating-blank-staves.ly +defining-an-engraver-in-scheme-ambitus-engraver.ly engravers-one-by-one.ly mensurstriche-layout-bar-lines-between-the-staves.ly nesting-staves.ly removing-bar-numbers-from-a-score.ly -scheme-engraver-ambitus.ly use-square-bracket-at-the-start-of-a-staff-group.ly vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly vocal-ensemble-template-with-verse-and-refrain.ly 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 3a0b39a437..fdcc88444e 100644 --- a/Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly +++ b/Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.1 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La visibilidad de los objetos de extensión que acaban en la primera diff --git a/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly b/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly index c8b556087a..07db41e79c 100644 --- a/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly +++ b/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations, chords, keyboards, fretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede controlar con precisión la colocación de los números de digitación. Para que se tenga en cuenta la orientación de las @@ -18,14 +18,12 @@ sea una sola nota. doctitlees = "Controlar la colocación de las digitaciones de acordes" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Position von Fingersatzzahlen kann exakt kontrolliert werden. " doctitlede = "Position von Fingersatz in Akkorden kontrollieren" - %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b texidocfr = " diff --git a/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly b/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly index 6b281dc0ce..3a94721058 100644 --- a/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly +++ b/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " El orden vertical que ocupan las inscripciones gráficas está controlado con la propiedad @code{'script-priority}. Cuanto más @@ -22,7 +22,6 @@ lugar. " doctitlees = "Controlar la ordenación vertical de las inscripciones" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die vertikale Anordnung von Beschriftungen wird mit der @@ -37,7 +36,6 @@ anhand ihres Auftretens in der Quelldatei entschieden. " doctitlede = "Die vertikale Anordnung von Beschriftungen kontrollieren" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Les symboles s'ordonnent verticalement suivant la propriété diff --git a/Documentation/snippets/creating-a-delayed-turn.ly b/Documentation/snippets/creating-a-delayed-turn.ly index 9721f3bef2..906adac329 100644 --- a/Documentation/snippets/creating-a-delayed-turn.ly +++ b/Documentation/snippets/creating-a-delayed-turn.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La creación de un grupeto circular de anticipación entre dos notas, donde la nota inferior del grupeto utiliza una alteración, requiere @@ -21,7 +21,6 @@ grupeto horizontalmente. doctitlees = "Crear un grupeto de anticipación" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Einen Doppelschlag mit Vorhalt zu erstellen, wobei die untere Note das @@ -33,7 +32,6 @@ wird benutzt, um den Doppelschlag horizontal zu positionieren. " doctitlede = "Einen Doppelschlag mit Vorhalt erstellen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse 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 161d561224..5df0598631 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 @@ -6,7 +6,7 @@ \header { lsrtags = "pitches" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " En una música que tenga muchas apariciones de la misma secuencia de notas a distintas alturas, podría ser de 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 e3784af802..046467368f 100644 --- a/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly +++ b/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede trazar un símbolo de arpegio entre notas de distintas voces que están sobre el mismo pentagrama si el grabador @@ -16,7 +16,6 @@ voces que están sobre el mismo pentagrama si el grabador " doctitlees = "Crear arpegios entre notas de voces distintas" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ein Arpeggio kann zwischen Noten aus unterschidlichen Stimmen auf demselben @@ -25,7 +24,6 @@ System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den " doctitlede = "Arpeggios zwischen unterschiedlichen Stimmen erzeugen" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la diff --git a/Documentation/snippets/creating-blank-staves.ly b/Documentation/snippets/creating-blank-staves.ly index 2eafd196ae..7ff227f2fd 100644 --- a/Documentation/snippets/creating-blank-staves.ly +++ b/Documentation/snippets/creating-blank-staves.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para crear pentagramas en blanco, genere compases vacíos y después elimine el grabador de números de compás @code{Bar_number_engraver} 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 136cddc6c2..5d8e46a8ca 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 @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Dentro de un @code{PianoStaff}, es posible hacer que un arpegio cruce entre los pentagramas ajustando la propiedad @@ -15,7 +15,6 @@ cruce entre los pentagramas ajustando la propiedad " doctitlees = "Crear arpegios que se cruzan entre pentagramas dentro de un sistema de piano" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Arpeggio über mehrere Systeme können in anderen Kontexten als dem @@ -24,7 +23,6 @@ in den @code{Score}-Kontext eingefügt wird. " doctitlede = "Arpeggio über mehrere Systeme in anderen Kontexten" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Dans une double portée pour piano (@code{PianoStaff}), un arpège peut 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 a6f2fc03d0..041b56422b 100644 --- a/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly +++ b/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden crear arpegios que se cruzan entre pentagramas dentro de contextos distintos a @code{GrandStaff}, @code{PianoStaff} y @@ -16,7 +16,6 @@ contextos distintos a @code{GrandStaff}, @code{PianoStaff} y " doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio @@ -26,7 +25,6 @@ zwischen beiden Systemen zu verbinden, indem die " doctitlede = "Arpeggio zwischen Systemen in einem Klaviersystem erstellen" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Il est possible de distribuer un arpège sur plusieurs portées d'un diff --git a/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly b/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly index 72be5f6900..55bbd68e95 100644 --- a/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly +++ b/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden crear indicaciones metronómicas nuevas en modo de marcado, pero no cambian el tempo en la salida MIDI. @@ -14,7 +14,6 @@ marcado, pero no cambian el tempo en la salida MIDI. " doctitlees = "Crear indicaciones metronómicas en modo de marcado" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Neue Metronombezeichnungen können als Textbeschriftung erstellt werden, @@ -23,7 +22,6 @@ aber sie ändern nicht das Tempo für die MIDI-Ausgabe. " doctitlede = "Eine Metronombezeichnung als Textbeschriftung erstellen" - %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 texidocfr = " Vous pouvez créer des indications de tempo sous la forme d'étiquettes diff --git a/Documentation/snippets/creating-real-parenthesized-dynamics.ly b/Documentation/snippets/creating-real-parenthesized-dynamics.ly index eb15002179..06e11236a8 100644 --- a/Documentation/snippets/creating-real-parenthesized-dynamics.ly +++ b/Documentation/snippets/creating-real-parenthesized-dynamics.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Aunque la manera más fácil de añadir paréntesis a una indicación de dinámica es utilizar un bloque @code{\\markup}, este método diff --git a/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly b/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly index 6a89310295..eb942195bc 100644 --- a/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly +++ b/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, text, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " A diferencia de las inscripciones de texto, las lestras de ensayo no se pueden apilar en un punto concreto de la partitura: sólo se diff --git a/Documentation/snippets/creating-slurs-across-voices.ly b/Documentation/snippets/creating-slurs-across-voices.ly index b9177071f9..849a454083 100644 --- a/Documentation/snippets/creating-slurs-across-voices.ly +++ b/Documentation/snippets/creating-slurs-across-voices.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, keyboards, unfretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " En determinadas situaciones es necesario crear ligaduras de expresión entre notas que están en voces distintas. diff --git a/Documentation/snippets/creating-text-spanners.ly b/Documentation/snippets/creating-text-spanners.ly index 0fc43e3354..7e4274a26f 100644 --- a/Documentation/snippets/creating-text-spanners.ly +++ b/Documentation/snippets/creating-text-spanners.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, text, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan} permiten la creación de elementos de extensión textuales tan diff --git a/Documentation/snippets/custodes.ly b/Documentation/snippets/custodes.ly index 40aecd2d73..7a0ff9e868 100644 --- a/Documentation/snippets/custodes.ly +++ b/Documentation/snippets/custodes.ly @@ -6,7 +6,7 @@ \header { lsrtags = "ancient-notation, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden tipografiar «custos» en diferentes estilos. diff --git a/Documentation/snippets/customizing-fretboard-fret-diagrams.ly b/Documentation/snippets/customizing-fretboard-fret-diagrams.ly index dadba91ea3..57da12caaf 100644 --- a/Documentation/snippets/customizing-fretboard-fret-diagrams.ly +++ b/Documentation/snippets/customizing-fretboard-fret-diagrams.ly @@ -6,7 +6,7 @@ \header { lsrtags = "fretted-strings, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden establecer las propiedades de los diagramas de posiciones de acordes por medio de @code{'fret-diagram-details}. @@ -19,7 +19,6 @@ sobreescritura de propiedades. " doctitlees = "Personalizar los diagramas de posiciones" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Eigenschaften von Bunddiagrammen können in diff --git a/Documentation/snippets/customizing-markup-fret-diagrams.ly b/Documentation/snippets/customizing-markup-fret-diagrams.ly index 8375a55a7b..c74d9c6d2b 100644 --- a/Documentation/snippets/customizing-markup-fret-diagrams.ly +++ b/Documentation/snippets/customizing-markup-fret-diagrams.ly @@ -6,7 +6,7 @@ \header { lsrtags = "fretted-strings, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden establecer las propiedades de los diagramas de posiciones a través de @code{'fret-diagram-details}. Para los @@ -16,7 +16,6 @@ diagramas de posiciones de marcado, se pueden aplicar overrides " doctitlees = "Personalizar diagramas de posiciones de marcado" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Bunddiagramme können mit der Eigenschaft @code{'fret-diagram-details} @@ -26,7 +25,6 @@ Beschriftung vorgenommen werden. " doctitlede = "Anpassung von Beschriftungs-Bunddiagrammen" - %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b texidocfr = " 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 7c9dbcffbc..1f0e37c0f2 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 @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La dirección predeterminada de las plicas sobre la tercera línea del pentagrama está determinada por la propiedad @@ -15,7 +15,6 @@ del pentagrama está determinada por la propiedad " doctitlees = "Dirección predeterminada de las plicas sobre la tercera línea del pentagrama" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Richtung von Hälsen auf der mittleren Linie kann mit der @code{Stem}-Eigenschaft diff --git a/Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly b/Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly new file mode 100644 index 0000000000..50d6c675c0 --- /dev/null +++ b/Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly @@ -0,0 +1,341 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.15 +\version "2.13.29" + +\header { +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b + + texidoces = " +Este ejemplo demuestra cómo se puede definir el grabador de ámbito en +el espacio del usuario, con un grabador de Scheme. + +Esto es básicamente una reescritura en Scheme del código de +@file{lily/ambitus-engraver.cc}. + +" + + doctitlees = "Definir un grabador en Scheme: grabador de ámbito" + + + lsrtags = "contexts-and-engravers" + + + texidoc = "This example demonstrates how the ambitus engraver may be + defined on the user side, with a Scheme engraver. + + This is basically a rewrite in Scheme of the code from + @file{lily/ambitus-engraver.cc}. +" + + doctitle = "Defining an engraver in Scheme: ambitus engraver" +} % begin verbatim + + +#(use-modules (oop goops)) + +%%% +%%% Grob utilities +%%% +%%% These are literal rewrites of some C++ methods used by the ambitus engraver. +#(define (ly:event::in-event-class event class-name) + "Check if @var{event} the given class. +Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}." + (memq class-name (ly:make-event-class (ly:event-property event 'class)))) + +#(define (ly:separation-item::add-conditional-item grob grob-item) + "Add @var{grob-item} to the array of conditional elements of @var{grob}. +Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}." + (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item)) + +#(define (ly:accidental-placement::accidental-pitch accidental-grob) + "Get the pitch from the grob cause of @var{accidental-grob}. +Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}." + (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause) + 'pitch)) + +#(define (ly:accidental-placement::add-accidental grob accidental-grob) + "Add @var{accidental-grob}, an @code{Accidental} grob, to the +list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement} +grob. +Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}." + (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob))) + (set! (ly:grob-parent accidental-grob X) grob) + (set! (ly:grob-property accidental-grob 'X-offset) + ly:grob::x-parent-positioning) + (let* ((accidentals (ly:grob-object grob 'accidental-grobs)) + (handle (assq (ly:pitch-notename pitch) accidentals)) + (entry (if handle (cdr handle) '()))) + (set! (ly:grob-object grob 'accidental-grobs) + (assq-set! accidentals + (ly:pitch-notename pitch) + (cons accidental-grob entry)))))) + +%%% +%%% Ambitus data structure +%%% + +%%% The class holds the various grobs that are created +%%% to print an ambitus: +%%% - ambitus-group: the grob that groups all the components of an ambitus +%%% (Ambitus grob); +%%% - ambitus-line: the vertical line between the upper and lower ambitus +%%% notes (AmbitusLine grob); +%%% - ambitus-up-note and ambitus-down-note: the note head and accidental +%%% for the lower and upper note of the ambitus (see class +%%% below). +%%% The other slots define the key and clef context of the engraver: +%%% - start-c0: position of middle c at the beginning of the piece. It +%%% is used to place the ambitus notes according to their pitch; +%%% - start-key-sig: the key signature at the beginning of the piece. It +%%% is used to determine if accidentals shall be printed next to ambitus +%%% notes. + +#(define-class () + (ambitus-group #:accessor ambitus-group) + (ambitus-line #:accessor ambitus-line) + (ambitus-up-note #:getter ambitus-up-note + #:init-form (make )) + (ambitus-down-note #:getter ambitus-down-note + #:init-form (make )) + (start-c0 #:accessor ambitus-start-c0 + #:init-value #f) + (start-key-sig #:accessor ambitus-start-key-sig + #:init-value '())) + +%%% Accessor for the lower and upper note data of an ambitus +#(define-method (ambitus-note (ambitus ) direction) + "If @var{direction} is @code{UP}, then return the upper ambitus note +of @var{ambitus}, otherwise return the lower ambitus note." + (if (= direction UP) + (ambitus-up-note ambitus) + (ambitus-down-note ambitus))) + +%%% The class holds the grobs that are specific to ambitus +%%% (lower and upper) notes: +%%% - head: an AmbitusNoteHead grob; +%%% - accidental: an AmbitusAccidental grob, to be possibly printed next +%%% to the ambitus note head. +%%% Moreover: +%%% - pitch is the absolute pitch of the note +%%% - cause is the note event that causes this ambitus note, i.e. the lower +%%% or upper note of the considered music sequence. + +#(define-class () + (head #:accessor ambitus-note-head + #:init-value #f) + (accidental #:accessor ambitus-note-accidental + #:init-value #f) + (cause #:accessor ambitus-note-cause + #:init-value #f) + (pitch #:accessor ambitus-note-pitch + #:init-value #f)) + +%%% +%%% Ambitus engraving logics +%%% +%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}. + +#(define (make-ambitus translator) + "Build an ambitus object: initialize all the grobs and their relations. + +The Ambitus grob contain all other grobs: + Ambitus + |- AmbitusLine + |- AmbitusNoteHead for upper note + |- AmbitusAccidental for upper note + |- AmbitusNoteHead for lower note + |- AmbitusAccidental for lower note + +The parent of an accidental is the corresponding note head, +and the accidental is set as the 'accidental-grob of the note head +so that is printed by the function that prints notes." + ;; make the ambitus object + (let ((ambitus (make ))) + ;; build the Ambitus grob, which will contain all other grobs + (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '())) + ;; build the AmbitusLine grob (line between lower and upper note) + (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '())) + ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental + (for-each (lambda (direction) + (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '())) + (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '())) + (group (ambitus-group ambitus))) + ;; The parent of the AmbitusAccidental grob is the + ;; AmbitusNoteHead grob + (set! (ly:grob-parent accidental Y) head) + ;; The AmbitusAccidental grob is set as the accidental-grob + ;; object of the AmbitusNoteHead. This is later used by the + ;; function that prints notes. + (set! (ly:grob-object head 'accidental-grob) accidental) + ;; both the note head and the accidental grobs are added + ;; to the main ambitus grob. + (ly:axis-group-interface::add-element group head) + (ly:axis-group-interface::add-element group accidental) + ;; the note head and the accidental grobs are added to the + ;; ambitus object + (set! (ambitus-note-head (ambitus-note ambitus direction)) + head) + (set! (ambitus-note-accidental (ambitus-note ambitus direction)) + accidental))) + (list DOWN UP)) + ;; The parent of the ambitus line is the lower ambitus note head + (set! (ly:grob-parent (ambitus-line ambitus) X) + (ambitus-note-head (ambitus-note ambitus DOWN))) + ;; the ambitus line is added to the ambitus main grob + (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus)) + ambitus)) + +#(define-method (initialize-ambitus-state (ambitus ) translator) + "Initialize the state of @var{ambitus}, by getting the starting +position of middle C and key signature from @var{translator}'s context." + (if (not (ambitus-start-c0 ambitus)) + (begin + (set! (ambitus-start-c0 ambitus) + (ly:context-property (ly:translator-context translator) + 'middleCPosition + 0)) + (set! (ambitus-start-key-sig ambitus) + (ly:context-property (ly:translator-context translator) + 'keySignature))))) + +#(define-method (update-ambitus-notes (ambitus ) note-grob) + "Update the upper and lower ambitus pithes of @var{ambitus}, using +@var{note-grob}." + ;; Get the event that caused the note-grob creation + ;; and check that it is a note-event. + (let ((note-event (ly:grob-property note-grob 'cause))) + (if (ly:event::in-event-class note-event 'note-event) + ;; get the pitch from the note event + (let ((pitch (ly:event-property note-event 'pitch))) + ;; if this pitch is lower than the current ambitus lower + ;; note pitch (or it has not been initialized yet), + ;; then this pitch is the new ambitus lower pitch, + ;; and conversely for upper pitch. + (for-each (lambda (direction pitch-compare) + (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction))) + (pitch-compare pitch + (ambitus-note-pitch (ambitus-note ambitus direction)))) + (begin + (set! (ambitus-note-pitch (ambitus-note ambitus direction)) + pitch) + (set! (ambitus-note-cause (ambitus-note ambitus direction)) + note-event)))) + (list DOWN UP) + (list ly:pitch) translator) + "Typeset the ambitus: +- place the lower and upper ambitus notes according to their pitch and + the position of the middle C; +- typeset or delete the note accidentals, according to the key signature. + An accidental, if it is to be printed, is added to an AccidentalPlacement + grob (a grob dedicated to the placement of accidentals near a chord); +- both note heads are added to the ambitus line grob, so that a line should + be printed between them." + ;; check if there are lower and upper pitches + (if (and (ambitus-note-pitch (ambitus-note ambitus UP)) + (ambitus-note-pitch (ambitus-note ambitus DOWN))) + ;; make an AccidentalPlacement grob, for placement of note accidentals + (let ((accidental-placement (ly:engraver-make-grob + translator + 'AccidentalPlacement + (ambitus-note-accidental (ambitus-note ambitus DOWN))))) + ;; For lower and upper ambitus notes: + (for-each (lambda (direction) + (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction)))) + ;; set the cause and the staff position of the ambitus note + ;; according to the associated pitch + (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) + 'cause) + (ambitus-note-cause (ambitus-note ambitus direction))) + (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) + 'staff-position) + (+ (ambitus-start-c0 ambitus) + (ly:pitch-steps pitch))) + ;; determine if an accidental shall be printed for this note, + ;; according to the key signature + (let* ((handle (or (assoc (cons (ly:pitch-octave pitch) + (ly:pitch-notename pitch)) + (ambitus-start-key-sig ambitus)) + (assoc (ly:pitch-notename pitch) + (ambitus-start-key-sig ambitus)))) + (sig-alter (if handle (cdr handle) 0))) + (cond ((= (ly:pitch-alteration pitch) sig-alter) + ;; the note alteration is in the key signature + ;; => it does not have to be printed + (ly:grob-suicide! + (ambitus-note-accidental (ambitus-note ambitus direction))) + (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction)) + 'accidental-grob) + '())) + (else + ;; otherwise, the accidental shall be printed + (set! (ly:grob-property (ambitus-note-accidental + (ambitus-note ambitus direction)) + 'alteration) + (ly:pitch-alteration pitch))))) + ;; add the AccidentalPlacement grob to the + ;; conditional items of the AmbitusNoteHead + (ly:separation-item::add-conditional-item + (ambitus-note-head (ambitus-note ambitus direction)) + accidental-placement) + ;; add the AmbitusAccidental to the list of the + ;; AccidentalPlacement grob accidentals + (ly:accidental-placement::add-accidental + accidental-placement + (ambitus-note-accidental (ambitus-note ambitus direction))) + ;; add the AmbitusNoteHead grob to the AmbitusLine grob + (ly:pointer-group-interface::add-grob + (ambitus-line ambitus) + 'note-heads + (ambitus-note-head (ambitus-note ambitus direction))))) + (list DOWN UP)) + ;; add the AccidentalPlacement grob to the main Ambitus grob + (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement)) + ;; no notes ==> suicide the grobs + (begin + (for-each (lambda (direction) + (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction))) + (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction)))) + (list DOWN UP)) + (ly:grob-suicide! ambitus-line)))) + +%%% +%%% Ambitus engraver definition +%%% +#(define ambitus-engraver + (lambda (context) + (let ((ambitus #f)) + ;; when music is processed: make the ambitus object, if not already built + `((process-music . ,(lambda (translator) + (if (not ambitus) + (set! ambitus (make-ambitus translator))))) + ;; set the ambitus clef and key signature state + (stop-translation-timestep . ,(lambda (translator) + (if ambitus + (initialize-ambitus-state ambitus translator)))) + ;; when a note-head grob is built, update the ambitus notes + (acknowledgers + (note-head-interface . ,(lambda (engraver grob source-engraver) + (if ambitus + (update-ambitus-notes ambitus grob))))) + ;; finally, typeset the ambitus according to its upper and lower notes + ;; (if any). + (finalize . ,(lambda (translator) + (if ambitus + (typeset-ambitus ambitus translator)))))))) + +%%% +%%% Example +%%% + +\score { + \new StaffGroup << + \new Staff { c'4 des' e' fis' gis' } + \new Staff { \clef "bass" c4 des ~ des ees b, } + >> + \layout { \context { \Staff \consists #ambitus-engraver } } +} diff --git a/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly b/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly index 03e4a8ab84..662a9103df 100644 --- a/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly +++ b/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly @@ -6,7 +6,7 @@ \header { lsrtags = "fretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden añadir diagramas de posiciones predefinidas para @@ -25,7 +25,6 @@ de las cuerdas. Hay planes para corregir esto en un futuro. " doctitlees = "Definición de posiciones predefinidas para otros instrumentos" - %% Translation of GIT committish: f23429bc5cfa9d141ef7b4509afc46c140308a1e texidocde = " Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden @@ -43,7 +42,6 @@ enthalten. Das soll in der Zukunft verbessert werden. " doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " 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 75c902c8c1..6d2d5b3505 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 @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Si hay un solo pentagrama en un de los tipos de sistema @code{ChoirStaff} o @code{StaffGroup}, el comportamiento @@ -22,7 +22,6 @@ distinta, como se ve en el segundo sistema del ejemplo. doctitlees = "Mostrar corchete o llave en grupos de un solo pentagrama" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn nur ein System einer Systemgruppe vom Typ @code{ChoirStaff} oder @@ -36,7 +35,6 @@ wie das zweite Beispiel zeigt. " doctitlede = "Klammer anzeigen wenn nur ein System gesetzt wird" - %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 texidocfr = " Lorsque, dans des regoupements de type @code{ChoirStaff} ou diff --git a/Documentation/snippets/displaying-complex-chords.ly b/Documentation/snippets/displaying-complex-chords.ly index 5b02cef3b8..72a5758843 100644 --- a/Documentation/snippets/displaying-complex-chords.ly +++ b/Documentation/snippets/displaying-complex-chords.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.1 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " He aquí una forma de imprimir un acorde en el que suena la misma nota diff --git a/Documentation/snippets/displaying-grob-ancestry.ly b/Documentation/snippets/displaying-grob-ancestry.ly index b50822fc66..4254e0a34c 100644 --- a/Documentation/snippets/displaying-grob-ancestry.ly +++ b/Documentation/snippets/displaying-grob-ancestry.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.10 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al trabajar con los callbacks de un grob, puede ser de mucha ayuda 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 index b8e2226e32..ccbbe5901d 100644 --- a/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly +++ b/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Alteraciones de estilo dodecafónico para todas las notas incluidas las naturales" texidoces = " En las obras de principios del s.XX, empezando por Schoenberg, Berg y diff --git a/Documentation/snippets/dot-count-override.ly b/Documentation/snippets/dot-count-override.ly deleted file mode 100644 index 7d4e7dd538..0000000000 --- a/Documentation/snippets/dot-count-override.ly +++ /dev/null @@ -1,22 +0,0 @@ -% Do not edit this file; it is automatically -% generated from Documentation/snippets/new -% This file is in the public domain. -%% Note: this file works from version 2.13.26 -\version "2.13.26" -\header { - lsrtags = "rhythms,expressive-marks" - texidoc = "This code demonstrates how to change the number of -augmentation dots on a single note." - doctitle = "Changing the number of augmentation dots per note" -} % begin verbatim - - -\relative c' { - c4.. a16 r2 | - \override Dots #'dot-count = #4 - c4.. a16 r2 | - \override Dots #'dot-count = #0 - c4.. a16 r2 | - \revert Dots #'dot-count - c4.. a16 r2 | -} diff --git a/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly b/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly index 7697c21663..b3c97576a2 100644 --- a/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly +++ b/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.8 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Funciones postfijas para la creación de objetos de extensión de texto diff --git a/Documentation/snippets/dynamics-text-spanner-postfix.ly b/Documentation/snippets/dynamics-text-spanner-postfix.ly index 9c011b9878..f847cf07cf 100644 --- a/Documentation/snippets/dynamics-text-spanner-postfix.ly +++ b/Documentation/snippets/dynamics-text-spanner-postfix.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.20 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los objetos de extensión \cresc, \dim y \decresc ahora se pueden diff --git a/Documentation/snippets/editorial-headword.ly b/Documentation/snippets/editorial-headword.ly index 0027caee34..ed285dbf64 100644 --- a/Documentation/snippets/editorial-headword.ly +++ b/Documentation/snippets/editorial-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) \paper { 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 5f03a6a331..ec394b36d1 100644 --- a/Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly +++ b/Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede insertar códico PostScript directamente dentro de un bloque @code{\\markup}. diff --git a/Documentation/snippets/engravers-one-by-one.ly b/Documentation/snippets/engravers-one-by-one.ly index bf723d0b8a..648498bd08 100644 --- a/Documentation/snippets/engravers-one-by-one.ly +++ b/Documentation/snippets/engravers-one-by-one.ly @@ -6,7 +6,7 @@ \header { lsrtags = "contexts-and-engravers" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Del problema central de la notación, esto es, crear un determinado símbolo, se encargan los «plugins» o complementos añadidos. Cada diff --git a/Documentation/snippets/engraving-ties-manually.ly b/Documentation/snippets/engraving-ties-manually.ly index 3457b6bf96..2b4bd5abc8 100644 --- a/Documentation/snippets/engraving-ties-manually.ly +++ b/Documentation/snippets/engraving-ties-manually.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Grabado manual de las ligaduras" texidoces = " Se pueden grabar a mano las ligaduras modificando la propiedad @@ -17,7 +17,6 @@ hacia arriba, -1 = hacia abajo). " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Überbindungen können manuell gesetzt werden, indem man die @@ -30,7 +29,6 @@ Notensystemabständen an, die zweite Zahl zeigt die Richtung an (1 = nach oben, doctitlede = "Bindebögen manuell setzen" - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " Il est possible de graver manuellement les liaisons de tenue, en 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 51c07901ea..4e812eb66a 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 @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times" texidoces = " La propiedad @code{tupletSpannerDuration} establece cuánto debe durar @@ -24,7 +24,6 @@ correspondiente del manual de Referencia de la Notación. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Eigenschaft @code{tupletSpannerDuration} bestimmt, wie lange jede @@ -41,7 +40,6 @@ Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinhei doctitlede = "Mehrere Triolen notieren aber nur einmal \\times benutzen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de diff --git a/Documentation/snippets/expressive-headword.ly b/Documentation/snippets/expressive-headword.ly index 8aa2a824cb..5b887eea2c 100644 --- a/Documentation/snippets/expressive-headword.ly +++ b/Documentation/snippets/expressive-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) \paper { diff --git a/Documentation/snippets/expressive-marks.snippet-list b/Documentation/snippets/expressive-marks.snippet-list index 81d6416d5d..d8d9ba3be6 100644 --- a/Documentation/snippets/expressive-marks.snippet-list +++ b/Documentation/snippets/expressive-marks.snippet-list @@ -10,6 +10,7 @@ changing--flageolet-mark-size.ly changing-text-and-spanner-styles-for-text-dynamics.ly changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly changing-the-breath-mark-symbol.ly +changing-the-number-of-augmentation-dots-per-note.ly combining-dynamics-with-markup-texts.ly contemporary-glissando.ly controlling-spanner-visibility-after-a-line-break.ly @@ -22,7 +23,6 @@ creating-real-parenthesized-dynamics.ly creating-simultaneous-rehearsal-marks.ly creating-slurs-across-voices.ly creating-text-spanners.ly -dot-count-override.ly double-glissando.ly dynamics-custom-text-spanner-postfix.ly dynamics-text-spanner-postfix.ly diff --git a/Documentation/snippets/faking-a-hammer-in-tablatures.ly b/Documentation/snippets/faking-a-hammer-in-tablatures.ly index 8eed0ec662..d984633376 100644 --- a/Documentation/snippets/faking-a-hammer-in-tablatures.ly +++ b/Documentation/snippets/faking-a-hammer-in-tablatures.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de diff --git a/Documentation/snippets/figured-bass-headword.ly b/Documentation/snippets/figured-bass-headword.ly index d006468a22..4203bf7cdd 100644 --- a/Documentation/snippets/figured-bass-headword.ly +++ b/Documentation/snippets/figured-bass-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" #(set-global-staff-size 15) \paper { ragged-right = ##f diff --git a/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly b/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly index c1d495a0ba..18b925df25 100644 --- a/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly +++ b/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly @@ -6,7 +6,7 @@ \header { lsrtags = "fretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " En este ejemplo se combinan las digitaciones de la mano izquierda, indicaciones del número de cuerda y digitaciones de la mano @@ -15,7 +15,6 @@ derecha. " doctitlees = "Digitaciones - indicación del número de cuerda y digitaciones de mano derecha" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Dieses Beispiel kombiniert Fingersatz für die linke Hand, Saitennummern @@ -23,7 +22,6 @@ und Fingersatz für die rechte Hand. " doctitlede = "Fingersatz Saitennummern und Fingersatz für die rechte Hand" - %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b texidocfr = " diff --git a/Documentation/snippets/flamenco-notation.ly b/Documentation/snippets/flamenco-notation.ly index 009cfb77ec..fa1b55cea3 100644 --- a/Documentation/snippets/flamenco-notation.ly +++ b/Documentation/snippets/flamenco-notation.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.10 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " diff --git a/Documentation/snippets/flat-flags-and-beam-nibs.ly b/Documentation/snippets/flat-flags-and-beam-nibs.ly index 40c3825348..b59a83d006 100644 --- a/Documentation/snippets/flat-flags-and-beam-nibs.ly +++ b/Documentation/snippets/flat-flags-and-beam-nibs.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Son posibles tanto los corchetes rectos sobre notas sueltas como extremos de barra sueltos en figuras unidas, con una combinación de @@ -41,7 +41,6 @@ tiene nada que ver con el @code{\\set} de dos notas por detrás.) doctitlees = "Corchetes rectos y extremos de barra sueltos" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Gerade Fähnchen an einzelnen Noten und überstehende Balkenenden bei @@ -72,7 +71,6 @@ Beispiel haben nichts mit dem @code{\\set}-Befehl zwei Noten vorher zu tun.) doctitlede = "Gerade Fähnchen und überstehende Balkenenden" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des diff --git a/Documentation/snippets/forcing-horizontal-shift-of-notes.ly b/Documentation/snippets/forcing-horizontal-shift-of-notes.ly index 5d08c19ec9..11a9086525 100644 --- a/Documentation/snippets/forcing-horizontal-shift-of-notes.ly +++ b/Documentation/snippets/forcing-horizontal-shift-of-notes.ly @@ -6,7 +6,7 @@ \header { lsrtags = "simultaneous-notes, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Forzar el desplazamiento horizontal de las notas" @@ -17,7 +17,6 @@ texidoces = " " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn es zu Zusammenstößen kommt, kann mit folgender Lösung eine andere @@ -26,7 +25,6 @@ Notenlinienzwischenräume. " doctitlede = "Horizontale Verschiebung von Noten erzwingen" - %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c texidocfr = " Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet diff --git a/Documentation/snippets/forcing-hyphens-to-be-shown.ly b/Documentation/snippets/forcing-hyphens-to-be-shown.ly index 34a759474b..9aad994fbd 100644 --- a/Documentation/snippets/forcing-hyphens-to-be-shown.ly +++ b/Documentation/snippets/forcing-hyphens-to-be-shown.ly @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Si LilyPond no cree que haya sitio suficiente para un guión separador diff --git a/Documentation/snippets/fretted-headword.ly b/Documentation/snippets/fretted-headword.ly index c387787149..30888bd249 100644 --- a/Documentation/snippets/fretted-headword.ly +++ b/Documentation/snippets/fretted-headword.ly @@ -1,13 +1,13 @@ % Do not edit this file; it is automatically % generated from Documentation/snippets/new % This file is in the public domain. -%% Note: this file works from version 2.13.20 +%% Note: this file works from version 2.13.29 % INSPIRATIONAL HEADER FOR LILYPOND DOCUMENTATION fretted-strings % % Passage from Johann Kaspar Mertz "Opern Revue, Op. 8, no. 17" % % on melodies from Bellini's "Norma" % %*****************************************************************% -\version "2.13.20" +\version "2.13.29" #(set-global-staff-size 15) \paper { @@ -119,9 +119,7 @@ bass = \relative c { e,1 | % m. 4 %% new section starts here in A minor - \overrideBeamSettings #'Score #'(4 . 4) #'end - #'((* . (1 1 1 1)) - ((1 . 12) . (3 3 3 3))) + \set Score.beamExceptions = #'() \once \override TextScript #'staff-padding = #1.7 \times 2/3 { a8\p^\andantino e' a c a e a, e' a c a e } | % m. 5 diff --git a/Documentation/snippets/generating-random-notes.ly b/Documentation/snippets/generating-random-notes.ly index ae1602f387..398f2047af 100644 --- a/Documentation/snippets/generating-random-notes.ly +++ b/Documentation/snippets/generating-random-notes.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este fragmento de código basado en Scheme genera 24 notas aleatorias (o tantas como se necesiten), basándose en la diff --git a/Documentation/snippets/grid-lines--changing-their-appearance.ly b/Documentation/snippets/grid-lines--changing-their-appearance.ly index be5b558cec..584d81a60c 100644 --- a/Documentation/snippets/grid-lines--changing-their-appearance.ly +++ b/Documentation/snippets/grid-lines--changing-their-appearance.ly @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede cambiar el aspecto de las líneas de rejilla sobreescribiendo algunas de sus propiedades. @@ -14,7 +14,6 @@ sobreescribiendo algunas de sus propiedades. " doctitlees = "Líneas de rejilla: modificar su aspecto" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Erscheinung der Gitternetzlinien kann durch einige Eigenschaften @@ -22,7 +21,6 @@ geändert werden. " doctitlede = "Gitternetzlinien: Aussehen verändern" - %% Translation of GIT committish: 9ccf7f0f5e52e074f3b7852416ad5b78718395c8 texidocfr = " Modifier certaines des propriétés du cadrillage temporel aura pour effet 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 5cebdeb727..0a816c13dc 100644 --- a/Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly +++ b/Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly @@ -6,7 +6,7 @@ \header { lsrtags = "editorial-annotations" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden trazar líneas verticales normales entre pentagramas para mostrar la relación entre notas; sin embargo, en caso de música diff --git a/Documentation/snippets/grouping-beats.ly b/Documentation/snippets/grouping-beats.ly index 34672bfbb5..e1abd6d0a9 100644 --- a/Documentation/snippets/grouping-beats.ly +++ b/Documentation/snippets/grouping-beats.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los patrones de barrado se pueden alterar con la propiedad @code{beatGrouping}: diff --git a/Documentation/snippets/guitar-slides.ly b/Documentation/snippets/guitar-slides.ly index 0301fe1430..74d0533dcc 100644 --- a/Documentation/snippets/guitar-slides.ly +++ b/Documentation/snippets/guitar-slides.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " diff --git a/Documentation/snippets/guitar-strum-rhythms.ly b/Documentation/snippets/guitar-strum-rhythms.ly index ec6d86a2b2..80a0f2854f 100644 --- a/Documentation/snippets/guitar-strum-rhythms.ly +++ b/Documentation/snippets/guitar-strum-rhythms.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, fretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para la música de guitarra, es posible mostrar los ritmos de rasgueo, además de las notas de la melodía, acordes y diagramas de posiciones. @@ -14,7 +14,6 @@ además de las notas de la melodía, acordes y diagramas de posiciones. " doctitlees = "Ritmos rasgueados de guitarra" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " In Guitarrennotation kann neben Melodie, Akkordbezeichnungen und @@ -24,7 +23,6 @@ Bunddiagrammen auch der Schlagrhythmus angegeben werden. doctitlede = "Schlagrhythmus für Guitarren" - %% Translation of GIT committish: 015b8e65e5e9a74cea1618b597402b5b74f89b89 texidocfr = " En matière de notation pour guitare, il arrive que soient indiqués les diff --git a/Documentation/snippets/hairpins-with-different-line-styles.ly b/Documentation/snippets/hairpins-with-different-line-styles.ly index 911dd3eaff..a12c5ce711 100644 --- a/Documentation/snippets/hairpins-with-different-line-styles.ly +++ b/Documentation/snippets/hairpins-with-different-line-styles.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los reguladores pueden imprimirse en uno cualquiera de los estilos de @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag. diff --git a/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly b/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly new file mode 100644 index 0000000000..2a73426403 --- /dev/null +++ b/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly @@ -0,0 +1,20 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.26 +\version "2.13.29" +\header { + lsrtags = "pitches" + texidoc = "This shows how to hide accidentals on tied notes at the beginning of a +new system." + doctitle = "Hiding accidentals on tied notes at the beginning of a new system" +} % begin verbatim + + +\relative c'' { + \override Accidental #'hide-tied-accidental-after-break = ##t + cis1~ cis~ + \break + cis +} + 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 388f120049..4dcdd7ba70 100644 --- a/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly +++ b/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0c1494d93d3ac391fe549a02e8198fe628edac17 texidoces = " Los cambios de dinámica con estilo de texto (como cresc. y dim.) se imprimen con una línea intermitente que muestra su alcance. @@ -15,7 +15,6 @@ Esta línea se puede suprimir de la siguiente manera: " doctitlees = "Ocultar la línea de extensión de las expresiones textuales de dinámica" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Dynamik-Texte (wie cresc. und dim.) werden mit einer gestrichelten Linie @@ -24,7 +23,6 @@ unterdrückt werden: " doctitlede = "Crescendo-Linien von Dynamik-Texten unterdrücken" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Les crescendos et decrescendos indiqués textuellement -- tels que diff --git a/Documentation/snippets/incipit.ly b/Documentation/snippets/incipit.ly index d1af95dd64..60c8336fb7 100644 --- a/Documentation/snippets/incipit.ly +++ b/Documentation/snippets/incipit.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los «incipit» se pueden escribir utilizando el grob del nombre del instruemento, pero manteniendo independientes las definiciones del 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 def0c2e79c..cb9b207772 100644 --- a/Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly +++ b/Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly @@ -6,7 +6,7 @@ \header { lsrtags = "keyboards" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Un corchete de arpegio puede indicar que se tienen que tocar con la misma mano notas que están en dos pentagramas distintos. Para hacerlo, @@ -19,7 +19,6 @@ configurar a la forma de corchete en el contexto de @code{PianoStaff}. " doctitlees = "Indicar acordes de pentagrama cruzado con corchetes de arpegio" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Eine Arpeggioklammer kann anzeigen, dass Noten auf zwei unterschiedlichen diff --git a/Documentation/snippets/inserting-a-caesura.ly b/Documentation/snippets/inserting-a-caesura.ly index e504c7dcdd..5cb8b5c796 100644 --- a/Documentation/snippets/inserting-a-caesura.ly +++ b/Documentation/snippets/inserting-a-caesura.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las marcas de cesura se pueden crear sobreescribiendo la propiedad @code{'text} del objeto @code{BreathingSign}. También está disponible @@ -15,7 +15,6 @@ una marca de cesura curva. " doctitlees = "Insertar una cesura" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Zäsurzeichen können erstellt werden, indem die @code{'text}-Eigenschaft @@ -23,7 +22,6 @@ des @code{BreathingSign}-Objektes verändert wird. Ein gekrümmtes Zäsurzeichen ist auch möglich. " doctitlede = "Eine Zäsur einfügen" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Une surcharge de la propriété @code{'text} de l'objet diff --git a/Documentation/snippets/isolated-percent-repeats.ly b/Documentation/snippets/isolated-percent-repeats.ly index 9518bfc282..c387195830 100644 --- a/Documentation/snippets/isolated-percent-repeats.ly +++ b/Documentation/snippets/isolated-percent-repeats.ly @@ -6,7 +6,7 @@ \header { lsrtags = "repeats" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " También se pueden imprimir símbolos de porcentaje sueltos. Esto se hace introduciendo un silencio multicompás con una función de @@ -15,7 +15,6 @@ impresión distinta: " doctitlees = "Símbolos de porcentaje sueltos" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Isolierte Prozentwiederholungen können auch ausgegeben werden. Das wird @@ -24,7 +23,6 @@ erreicht, indem man eine Ganztaktpause notiert und ihre Ausgabeform " doctitlede = "Isolierte Prozentwiederholungen" - %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 texidocfr = " Des symboles de pourcentage isolés peuvent aussi être obtenus, au diff --git a/Documentation/snippets/jazz-combo-template.ly b/Documentation/snippets/jazz-combo-template.ly index 5910a35ec3..f6cefdfbd5 100644 --- a/Documentation/snippets/jazz-combo-template.ly +++ b/Documentation/snippets/jazz-combo-template.ly @@ -6,7 +6,7 @@ \header { lsrtags = "keyboards, percussion, fretted-strings, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Ésta es una plantilla bastante avanzada, para un conjunto de jazz. Observe que la notación de todos los instrumentos está en @@ -17,7 +17,6 @@ dentro de una sección @code{\\transpose}. " doctitlees = "Plantilla para combo de jazz" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung: @@ -28,7 +27,6 @@ sich die Noten innerhalb eines @code{\transpose}-Abschnitts befinden. " doctitlede = "Vorlage für Jazz-Combo" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Bien que compliqué de prime abord, voici un canevas tout à fait indiqué diff --git a/Documentation/snippets/keep-change-clefs-full-sized.ly b/Documentation/snippets/keep-change-clefs-full-sized.ly index b7f86c4e65..c23eaf9494 100644 --- a/Documentation/snippets/keep-change-clefs-full-sized.ly +++ b/Documentation/snippets/keep-change-clefs-full-sized.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Cuando se produce un cambio de clave, el símbolo de clave se imprime a un tamaño menor que la clave inicial. Esto se puede ajustar con diff --git a/Documentation/snippets/keyboard-headword.ly b/Documentation/snippets/keyboard-headword.ly index fbcc5cf14b..5cb2972043 100644 --- a/Documentation/snippets/keyboard-headword.ly +++ b/Documentation/snippets/keyboard-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) diff --git a/Documentation/snippets/letter-tablature-formatting.ly b/Documentation/snippets/letter-tablature-formatting.ly index de07d45604..974b5c79b4 100644 --- a/Documentation/snippets/letter-tablature-formatting.ly +++ b/Documentation/snippets/letter-tablature-formatting.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.10 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La tablatura se puede formatear utilizando letras en lugar de números. diff --git a/Documentation/snippets/line-arrows.ly b/Documentation/snippets/line-arrows.ly index d3197f986e..83c72d0035 100644 --- a/Documentation/snippets/line-arrows.ly +++ b/Documentation/snippets/line-arrows.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden aplicar puntas de flecha a los elementos de extensión de texto y de línea (como el Glissando). diff --git a/Documentation/snippets/lyrics-alignment.ly b/Documentation/snippets/lyrics-alignment.ly index 9d534c75fe..563e3f5577 100644 --- a/Documentation/snippets/lyrics-alignment.ly +++ b/Documentation/snippets/lyrics-alignment.ly @@ -6,7 +6,7 @@ \header { lsrtags = "text, vocal-music" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La alineación horizontal de la letra se puede ajustar sobreescribiendo la propiedad @code{self-alignment-X} del objeto @code{LyricText}. diff --git a/Documentation/snippets/makam-example.ly b/Documentation/snippets/makam-example.ly index 6d59259af6..eb58f15b8a 100644 --- a/Documentation/snippets/makam-example.ly +++ b/Documentation/snippets/makam-example.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.0 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " El «Makam» es un tipo de melodía de Turquía que utiliza alteraciones microtonales de 1/9 de tono. Consulte el diff --git a/Documentation/snippets/making-slurs-with-complex-dash-structure.ly b/Documentation/snippets/making-slurs-with-complex-dash-structure.ly index 005ca96fa2..72a9fc9bff 100644 --- a/Documentation/snippets/making-slurs-with-complex-dash-structure.ly +++ b/Documentation/snippets/making-slurs-with-complex-dash-structure.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.1 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las ligaduras de expresión se pueden construir con patrones de 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 338bf47d1f..1c68d1e06d 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 @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, editorial-annotations" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede engrosar una línea del pentagrama con fines pedagógicos (p.ej. la tercera línea o la de la clave de Sol). Esto se puede @@ -17,7 +17,6 @@ destacar, utilizando la propiedad @code{line-positions} del objeto " doctitlees = "Hacer unas líneas del pentagrama más gruesas que las otras" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Für den pädagogischen Einsatz kann eine Linie des Notensystems dicker @@ -28,7 +27,6 @@ herangezogen. " doctitlede = "Eine Linie des Notensystems dicker als die anderen machen" - %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 texidocfr = " Vous pourriez avoir envie, dans un but pédagogique, de rendre certaines 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 cae626b4af..d8c04a8d4c 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 @@ -16,19 +16,20 @@ a spoken section with the @code{\\speakOn} keyword, and end it with the } % begin verbatim speakOn = { - \override Stem #'stencil = #(lambda (grob) - (let* ((x-parent (ly:grob-parent grob X)) - (is-rest? (ly:grob? (ly:grob-object x-parent 'rest)))) - (if is-rest? - empty-stencil - (ly:stencil-combine-at-edge - (ly:stem::print grob) - Y - (- (ly:grob-property grob 'direction)) - (grob-interpret-markup grob - (markup #:hspace -1.025 #:fontsize -4 - #:musicglyph "noteheads.s2cross")) - -2.3 0)))) + \override Stem #'stencil = + #(lambda (grob) + (let* ((x-parent (ly:grob-parent grob X)) + (is-rest? (ly:grob? (ly:grob-object x-parent 'rest)))) + (if is-rest? + empty-stencil + (ly:stencil-combine-at-edge + (ly:stem::print grob) + Y + (- (ly:grob-property grob 'direction)) + (grob-interpret-markup grob + (markup #:center-align #:fontsize -4 + #:musicglyph "noteheads.s2cross")) + -2.3 0)))) } speakOff = { diff --git a/Documentation/snippets/measure-counter.ly b/Documentation/snippets/measure-counter.ly index c0d675b25f..0efc86c5ab 100644 --- a/Documentation/snippets/measure-counter.ly +++ b/Documentation/snippets/measure-counter.ly @@ -6,7 +6,7 @@ \header { lsrtags = "repeats, staff-notation, editorial-annotations" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este fragmento de código proporciona una solución alternativa a la producción de contadores de compás utilizando repeticiones 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 23e3cec47a..4ed2ca4af5 100644 --- a/Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly +++ b/Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La disposición «mensurstriche» en que las líneas divisorias no están dibujadas sobre los pentagramas, sino entre ellos, se puede @@ -18,7 +18,6 @@ propiedad @code{transparent}. doctitlees = "Disposición Mensurstriche (líneas divisorias entre pentagramas)" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Das Mensurstiche-Layout, in welchem die Taktlinien nicht auf den Systemen, @@ -28,7 +27,6 @@ Systemen werden mit der the @code{transparent}-Eigenschaft ausgelöscht. " doctitlede = "Mensurstriche-Layout (Taktstriche zwischen den Systemen" - %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 texidocfr = " En musique mensurale, les barres de mesure ne traversent pas les diff --git a/Documentation/snippets/modern-tab-text-clef.ly b/Documentation/snippets/modern-tab-text-clef.ly index d3e6c8162c..9a39949aeb 100644 --- a/Documentation/snippets/modern-tab-text-clef.ly +++ b/Documentation/snippets/modern-tab-text-clef.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Utilice un texto de marcado para sustituir el glifo de clave (TAB) con una fuente tipográfica moderna. 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 8238dec60a..bdf162ebc6 100644 --- a/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly +++ b/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las abreviaturas se encuentran definidas dentro del archivo @code{ly/script-init.ly}, donde las variables @code{dashHat}, @@ -21,7 +21,6 @@ semitrino en lugar del símbolo predeterminado +, asigne el valor " doctitlees = "Modificar los valores predeterminados para la notación abreviada de las articulaciones" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Abkürzungen sind in der Datei @samp{ly/script-init.ly} definiert, wo @@ -35,7 +34,6 @@ assoziieren, muss der Wert @code{trill} der Variable " doctitlede = "Die Standardwerte der Abkürzungen von Artikulationen verändern" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Les raccourcis sont répertoriés dans le fichier diff --git a/Documentation/snippets/moving-dotted-notes-in-polyphony.ly b/Documentation/snippets/moving-dotted-notes-in-polyphony.ly index bf426a65d3..98bec6a609 100644 --- a/Documentation/snippets/moving-dotted-notes-in-polyphony.ly +++ b/Documentation/snippets/moving-dotted-notes-in-polyphony.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Cuando se puede una nota en la voz superior para evitar la colisión con una nota de otra voz, el comportamiento predeterminado es diff --git a/Documentation/snippets/moving-slur-positions-vertically.ly b/Documentation/snippets/moving-slur-positions-vertically.ly index 8a50faa25e..9476cdc132 100644 --- a/Documentation/snippets/moving-slur-positions-vertically.ly +++ b/Documentation/snippets/moving-slur-positions-vertically.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede ajustar la posición vertical de una ligadura de expresiónutilizando la propiedad @code{positions} del objeto diff --git a/Documentation/snippets/multi-measure-rest-markup.ly b/Documentation/snippets/multi-measure-rest-markup.ly index 904c495d8b..8142e06b2b 100644 --- a/Documentation/snippets/multi-measure-rest-markup.ly +++ b/Documentation/snippets/multi-measure-rest-markup.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los elementos de marcado aplicados a un silencio multicompás se centran encima o debajo de éste. Los elementos de marcado extensos @@ -25,7 +25,6 @@ longitud del texto, éste aparecerá centrado. doctitlees = "Marcado de silencios multicompás" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = "Textbeschriftungen, die an Mehrtaktpausen gehängt wird, wird über oder unter der Pause zentriert. Lange Beschriftungen @@ -43,7 +42,6 @@ ist." doctitlede = "Textbeschriftung und Mehrtaktpausen" - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " Lorsque du texte est attaché à un silence multi-mesures, il sera centré diff --git a/Documentation/snippets/nesting-staves.ly b/Documentation/snippets/nesting-staves.ly index e1f72d2ff2..374dda66c2 100644 --- a/Documentation/snippets/nesting-staves.ly +++ b/Documentation/snippets/nesting-staves.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede utilizar la propiedad @code{systemStartDelimiterHierarchy} para crear grupos de @@ -24,7 +24,6 @@ todos los pentagramas. Las posibilidades son " doctitlees = "Anidado de grupos de pentagramas" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Eigenschaft @code{systemStartDelimiterHierarchy} kann eingesetzt @@ -40,7 +39,6 @@ die gesamte Gruppe. Die Möglichkeiten der Anfangsklammer sind: @code{SystemSta " doctitlede = "Systeme schachteln" - %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 texidocfr = " La propriété @code{systemStartDelimiterHierarchy} permet de créer des diff --git a/Documentation/snippets/new/automatic-beam-subdivisions.ly b/Documentation/snippets/new/automatic-beam-subdivisions.ly new file mode 100644 index 0000000000..59f6888ccb --- /dev/null +++ b/Documentation/snippets/new/automatic-beam-subdivisions.ly @@ -0,0 +1,39 @@ +\version "2.13.29" + +\header { + lsrtags = "rhythms" + + texidoc = " +Beams can be subdivided automatically. By setting the property +@code{subdivideBeams}, beams are subdivided at beat positions (as +specified in @code{baseMoment}). + +" + doctitle = "Automatic beam subdivisions" +} + +\new Staff { + \relative c'' { + << + { + \voiceOne + \set subdivideBeams = ##t + b32[ a g f c' b a g + b32^"subdivide beams" a g f c' b a g] + } + \new Voice { + \voiceTwo + b32_"default"[ a g f c' b a g + b32 a g f c' b a g] + } + >> + \oneVoice + \set baseMoment = #(ly:make-moment 1 8) + \set beatStructure = #'(2 2 2 2) + b32^"baseMoment 1 8"[ a g f c' b a g] + \set baseMoment = #(ly:make-moment 1 16) + \set beatStructure = #'(4 4 4 4) + b32^"baseMoment 1 16"[ a g f c' b a g] + } +} + diff --git a/Documentation/snippets/new/beam-endings-in-score-context.ly b/Documentation/snippets/new/beam-endings-in-score-context.ly index 96a2f2c411..890e091ce1 100644 --- a/Documentation/snippets/new/beam-endings-in-score-context.ly +++ b/Documentation/snippets/new/beam-endings-in-score-context.ly @@ -1,9 +1,9 @@ -\version "2.13.4" +\version "2.13.29" \header { lsrtags = "rhythms" texidoc = " -Beam-ending rules specified in the @code{Score} context apply to all +Beat structure rules specified in the @code{Score} context apply to all staves, but can be modified at both @code{Staff} and @code{Voice} levels: " @@ -13,18 +13,15 @@ levels: \relative c'' { \time 5/4 % Set default beaming for all staves - \overrideBeamSettings #'Score #'(5 . 4) #'end - #'(((1 . 8) . (3 4 3)) - ((1 . 16) . (6 8 6)) - ((1 . 32) . (12 16 12))) + \set Score.baseMoment = #(ly:make-moment 1 8) + \set Score.beatStructure = #'(3 4 3) << \new Staff { c8 c c c c c c c c c } \new Staff { % Modify beaming for just this staff - \overrideBeamSettings #'Staff #'(5 . 4) #'end - #'((* . (3 2))) + \set Staff.beatStructure = #'(6 4) c8 c c c c c c c c c } \new Staff { @@ -37,8 +34,7 @@ levels: % Modify beaming for this voice only \new Voice { \voiceTwo - \overrideBeamSettings #'Voice #'(5 . 4) #'end - #'((* . (3 2))) + \set Voice.beatStructure = #'(6 4) a8 a a a a a a a a a } >> diff --git a/Documentation/snippets/new/beam-grouping-in-7-8-time.ly b/Documentation/snippets/new/beam-grouping-in-7-8-time.ly index 98597bada1..f9e6253e26 100644 --- a/Documentation/snippets/new/beam-grouping-in-7-8-time.ly +++ b/Documentation/snippets/new/beam-grouping-in-7-8-time.ly @@ -1,12 +1,12 @@ -\version "2.13.4" +\version "2.13.29" \header { lsrtags = "rhythms" texidoc = " -There are no default automatic beam groupings specified for 7/8 time, -so if automatic beams are required the grouping must be specified. For -example, to group all beams 2-3-2 in 7/8 time, specify beam endings at -2/8 and 5/8: +There is no default beat structure specified for 7/8 time, +so if automatic beams are required the structure must be specified. For +example, to group all beams 2-3-2 in 7/8 time, specify the +beat structure to be (2 3 2): " doctitle = "Beam grouping in 7/8 time" } @@ -15,7 +15,6 @@ example, to group all beams 2-3-2 in 7/8 time, specify beam endings at \time 7/8 % rhythm 2-3-2 a8 a a a a a a - \overrideBeamSettings #'Score #'(7 . 8) #'end - #'((* . (2 3 2))) + \set Score.beatStructure = #'(2 3 2) a8 a a a a a a } diff --git a/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly b/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly new file mode 100644 index 0000000000..1a0c928a0c --- /dev/null +++ b/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly @@ -0,0 +1,63 @@ +\version "2.13.15" + +\header { + lsrtags = "text, tweaks-and-overrides, contexts-and-engravers" + texidoc = " +For technical reasons, text scripts attached to note heads cannot +easily be centered on a note head's width, unlike articulations. + +Instead of using trial-and-error offset tweaks, this snippet uses a +Scheme engraver to reset the horizontal parent of each markup to a +@code{NoteColumn}. This also allows text to follow note heads which have +been shifted via @code{force-hshift}. +" + doctitle = "Centering markup on note heads automatically" +} + +#(define (Text_align_engraver ctx) + (let ((scripts '()) + (note-column #f)) + + `((acknowledgers + (note-column-interface + . ,(lambda (trans grob source) + ;; cache NoteColumn in this Voice context + (set! note-column grob))) + + (text-script-interface + . ,(lambda (trans grob source) + ;; whenever a TextScript is acknowledged, + ;; add it to `scripts' list + (set! scripts (cons grob scripts))))) + + (stop-translation-timestep + . ,(lambda (trans) + ;; if any TextScript grobs exist, + ;; set NoteColumn as X-parent + (and (pair? scripts) + (for-each (lambda (script) + (set! (ly:grob-parent script X) note-column)) + scripts)) + ;; clear scripts ready for next timestep + (set! scripts '())))))) + +\layout { + \context { + \Voice + \consists #Text_align_engraver + \override TextScript #'X-offset = + #ly:self-alignment-interface::aligned-on-x-parent + \override TextScript #'self-alignment-X = #CENTER + } +} + +\new Staff << + \relative c'' { + \override NoteColumn #'force-hshift = #3 + c1-\markup { \arrow-head #Y #DOWN ##t } + } + \\ + \relative c' { + a4 a-\markup { \huge ^ } a a + } +>> diff --git a/Documentation/snippets/new/changing-the-ambitus-gap.ly b/Documentation/snippets/new/changing-the-ambitus-gap.ly new file mode 100644 index 0000000000..b923658328 --- /dev/null +++ b/Documentation/snippets/new/changing-the-ambitus-gap.ly @@ -0,0 +1,40 @@ +\version "2.13.26" +\header { + lsrtags = "pitches" + texidoc = "It is possible to change the default gap setting for +ambitus." + + doctitle = "Changing the ambitus gap" +} + + +\layout { + \context { + \Voice + \consists "Ambitus_engraver" + } +} + +\new Staff { + \time 2/4 + % Default setting + c'4 g'' +} + +\new Staff { + \time 2/4 + \override AmbitusLine #'gap = #0 + c'4 g'' +} + +\new Staff { + \time 2/4 + \override AmbitusLine #'gap = #1 + c'4 g'' +} + +\new Staff { + \time 2/4 + \override AmbitusLine #'gap = #1.5 + c'4 g'' +} diff --git a/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly b/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly new file mode 100644 index 0000000000..8e183fd986 --- /dev/null +++ b/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly @@ -0,0 +1,17 @@ +\version "2.13.26" +\header { + lsrtags = "rhythms,expressive-marks" + texidoc = "This code demonstrates how to change the number of +augmentation dots on a single note." + doctitle = "Changing the number of augmentation dots per note" +} + +\relative c' { + c4.. a16 r2 | + \override Dots #'dot-count = #4 + c4.. a16 r2 | + \override Dots #'dot-count = #0 + c4.. a16 r2 | + \revert Dots #'dot-count + c4.. a16 r2 | +} diff --git a/Documentation/snippets/new/compound-time-signatures.ly b/Documentation/snippets/new/compound-time-signatures.ly index 25952ca158..3685151a6d 100644 --- a/Documentation/snippets/new/compound-time-signatures.ly +++ b/Documentation/snippets/new/compound-time-signatures.ly @@ -1,4 +1,4 @@ -\version "2.13.4" +\version "2.13.29" \header { lsrtags = "rhythms" @@ -24,8 +24,7 @@ database.) \relative c' { \override Staff.TimeSignature #'stencil = #(compound-time "2" "3" "8") \time 5/8 - \overrideBeamSettings #'Staff #'(5 . 8) #'end - #'((* . (2 3))) + \set Staff.beatStructure = #'(2 3) c8 d e fis gis c8 fis, gis e d c8 d e4 gis8 diff --git a/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly b/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly index f212a0bbe1..b9867a7f5e 100644 --- a/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly +++ b/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly @@ -1,30 +1,40 @@ -\version "2.13.4" +\version "2.13.29" \header { lsrtags = "rhythms" texidoc = " -Beat grouping within a bar is controlled by the default grouping -established in @code{beamSettings}. This grouping can be established -by the use of @code{\\overrideBeamSettings}. Alternatively, the +Beat grouping within a measure is controlled by the context property +@code{beatStructure}. Values of @code{beatStructure} are +established for many time signatures in +@file{scm/time-signature-settings.scm}. Values of @code{beatStructure} +can be changed or set with @code{\set}. +Alternatively, the Scheme function @code{set-time-signature} can be used to both -set the time signature and establish the default grouping rule. +set the time signature and establish the beat structure. @code{set-time-signature}, takes three arguments: the number of beats, the beat length, and the internal grouping of beats in -the measure. If the @code{Measure_grouping_engraver} is included +the measure. @code{\time} and @code{set-time-signature} both apply +to the @code{Timing} context, so they will not reset values of +@code{beatStructure} or @code{baseMoment} that are set in +other lower-level contexts, such as @code{Voice}. + +If the @code{Measure_grouping_engraver} is included in one of the display contexts, measure grouping signs will be created. Such signs ease reading rhythmically complex modern music. In the example, the 9/8 measure is grouped in two different patterns using the two different methods, while the 5/8 measure is grouped according to the default setting in -@file{scm/beam-settings.scm}: +@file{scm/time-signature-settings.scm}: " doctitle = "Conducting signs, measure grouping signs" } + \score { - \relative c'' { + \new Voice \relative c'' { \time 9/8 - \overrideBeamSettings #'Score #'(9 . 8) #'end #'((* . (2 2 2 3))) + g8 g d d g g a( bes g) | + \set Timing.beatStructure = #'(2 2 2 3) g8 g d d g g a( bes g) | #(set-time-signature 9 8 '(4 5)) g8 g d d g g a( bes g) | diff --git a/Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly b/Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly new file mode 100644 index 0000000000..be832c901e --- /dev/null +++ b/Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly @@ -0,0 +1,323 @@ +\version "2.13.15" + +\header { + + lsrtags = "contexts-and-engravers" + + + texidoc = "This example demonstrates how the ambitus engraver may be + defined on the user side, with a Scheme engraver. + + This is basically a rewrite in Scheme of the code from + @file{lily/ambitus-engraver.cc}. +" + + doctitle = "Defining an engraver in Scheme: ambitus engraver" +} + +#(use-modules (oop goops)) + +%%% +%%% Grob utilities +%%% +%%% These are literal rewrites of some C++ methods used by the ambitus engraver. +#(define (ly:event::in-event-class event class-name) + "Check if @var{event} the given class. +Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}." + (memq class-name (ly:make-event-class (ly:event-property event 'class)))) + +#(define (ly:separation-item::add-conditional-item grob grob-item) + "Add @var{grob-item} to the array of conditional elements of @var{grob}. +Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}." + (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item)) + +#(define (ly:accidental-placement::accidental-pitch accidental-grob) + "Get the pitch from the grob cause of @var{accidental-grob}. +Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}." + (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause) + 'pitch)) + +#(define (ly:accidental-placement::add-accidental grob accidental-grob) + "Add @var{accidental-grob}, an @code{Accidental} grob, to the +list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement} +grob. +Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}." + (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob))) + (set! (ly:grob-parent accidental-grob X) grob) + (set! (ly:grob-property accidental-grob 'X-offset) + ly:grob::x-parent-positioning) + (let* ((accidentals (ly:grob-object grob 'accidental-grobs)) + (handle (assq (ly:pitch-notename pitch) accidentals)) + (entry (if handle (cdr handle) '()))) + (set! (ly:grob-object grob 'accidental-grobs) + (assq-set! accidentals + (ly:pitch-notename pitch) + (cons accidental-grob entry)))))) + +%%% +%%% Ambitus data structure +%%% + +%%% The class holds the various grobs that are created +%%% to print an ambitus: +%%% - ambitus-group: the grob that groups all the components of an ambitus +%%% (Ambitus grob); +%%% - ambitus-line: the vertical line between the upper and lower ambitus +%%% notes (AmbitusLine grob); +%%% - ambitus-up-note and ambitus-down-note: the note head and accidental +%%% for the lower and upper note of the ambitus (see class +%%% below). +%%% The other slots define the key and clef context of the engraver: +%%% - start-c0: position of middle c at the beginning of the piece. It +%%% is used to place the ambitus notes according to their pitch; +%%% - start-key-sig: the key signature at the beginning of the piece. It +%%% is used to determine if accidentals shall be printed next to ambitus +%%% notes. + +#(define-class () + (ambitus-group #:accessor ambitus-group) + (ambitus-line #:accessor ambitus-line) + (ambitus-up-note #:getter ambitus-up-note + #:init-form (make )) + (ambitus-down-note #:getter ambitus-down-note + #:init-form (make )) + (start-c0 #:accessor ambitus-start-c0 + #:init-value #f) + (start-key-sig #:accessor ambitus-start-key-sig + #:init-value '())) + +%%% Accessor for the lower and upper note data of an ambitus +#(define-method (ambitus-note (ambitus ) direction) + "If @var{direction} is @code{UP}, then return the upper ambitus note +of @var{ambitus}, otherwise return the lower ambitus note." + (if (= direction UP) + (ambitus-up-note ambitus) + (ambitus-down-note ambitus))) + +%%% The class holds the grobs that are specific to ambitus +%%% (lower and upper) notes: +%%% - head: an AmbitusNoteHead grob; +%%% - accidental: an AmbitusAccidental grob, to be possibly printed next +%%% to the ambitus note head. +%%% Moreover: +%%% - pitch is the absolute pitch of the note +%%% - cause is the note event that causes this ambitus note, i.e. the lower +%%% or upper note of the considered music sequence. + +#(define-class () + (head #:accessor ambitus-note-head + #:init-value #f) + (accidental #:accessor ambitus-note-accidental + #:init-value #f) + (cause #:accessor ambitus-note-cause + #:init-value #f) + (pitch #:accessor ambitus-note-pitch + #:init-value #f)) + +%%% +%%% Ambitus engraving logics +%%% +%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}. + +#(define (make-ambitus translator) + "Build an ambitus object: initialize all the grobs and their relations. + +The Ambitus grob contain all other grobs: + Ambitus + |- AmbitusLine + |- AmbitusNoteHead for upper note + |- AmbitusAccidental for upper note + |- AmbitusNoteHead for lower note + |- AmbitusAccidental for lower note + +The parent of an accidental is the corresponding note head, +and the accidental is set as the 'accidental-grob of the note head +so that is printed by the function that prints notes." + ;; make the ambitus object + (let ((ambitus (make ))) + ;; build the Ambitus grob, which will contain all other grobs + (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '())) + ;; build the AmbitusLine grob (line between lower and upper note) + (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '())) + ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental + (for-each (lambda (direction) + (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '())) + (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '())) + (group (ambitus-group ambitus))) + ;; The parent of the AmbitusAccidental grob is the + ;; AmbitusNoteHead grob + (set! (ly:grob-parent accidental Y) head) + ;; The AmbitusAccidental grob is set as the accidental-grob + ;; object of the AmbitusNoteHead. This is later used by the + ;; function that prints notes. + (set! (ly:grob-object head 'accidental-grob) accidental) + ;; both the note head and the accidental grobs are added + ;; to the main ambitus grob. + (ly:axis-group-interface::add-element group head) + (ly:axis-group-interface::add-element group accidental) + ;; the note head and the accidental grobs are added to the + ;; ambitus object + (set! (ambitus-note-head (ambitus-note ambitus direction)) + head) + (set! (ambitus-note-accidental (ambitus-note ambitus direction)) + accidental))) + (list DOWN UP)) + ;; The parent of the ambitus line is the lower ambitus note head + (set! (ly:grob-parent (ambitus-line ambitus) X) + (ambitus-note-head (ambitus-note ambitus DOWN))) + ;; the ambitus line is added to the ambitus main grob + (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus)) + ambitus)) + +#(define-method (initialize-ambitus-state (ambitus ) translator) + "Initialize the state of @var{ambitus}, by getting the starting +position of middle C and key signature from @var{translator}'s context." + (if (not (ambitus-start-c0 ambitus)) + (begin + (set! (ambitus-start-c0 ambitus) + (ly:context-property (ly:translator-context translator) + 'middleCPosition + 0)) + (set! (ambitus-start-key-sig ambitus) + (ly:context-property (ly:translator-context translator) + 'keySignature))))) + +#(define-method (update-ambitus-notes (ambitus ) note-grob) + "Update the upper and lower ambitus pithes of @var{ambitus}, using +@var{note-grob}." + ;; Get the event that caused the note-grob creation + ;; and check that it is a note-event. + (let ((note-event (ly:grob-property note-grob 'cause))) + (if (ly:event::in-event-class note-event 'note-event) + ;; get the pitch from the note event + (let ((pitch (ly:event-property note-event 'pitch))) + ;; if this pitch is lower than the current ambitus lower + ;; note pitch (or it has not been initialized yet), + ;; then this pitch is the new ambitus lower pitch, + ;; and conversely for upper pitch. + (for-each (lambda (direction pitch-compare) + (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction))) + (pitch-compare pitch + (ambitus-note-pitch (ambitus-note ambitus direction)))) + (begin + (set! (ambitus-note-pitch (ambitus-note ambitus direction)) + pitch) + (set! (ambitus-note-cause (ambitus-note ambitus direction)) + note-event)))) + (list DOWN UP) + (list ly:pitch) translator) + "Typeset the ambitus: +- place the lower and upper ambitus notes according to their pitch and + the position of the middle C; +- typeset or delete the note accidentals, according to the key signature. + An accidental, if it is to be printed, is added to an AccidentalPlacement + grob (a grob dedicated to the placement of accidentals near a chord); +- both note heads are added to the ambitus line grob, so that a line should + be printed between them." + ;; check if there are lower and upper pitches + (if (and (ambitus-note-pitch (ambitus-note ambitus UP)) + (ambitus-note-pitch (ambitus-note ambitus DOWN))) + ;; make an AccidentalPlacement grob, for placement of note accidentals + (let ((accidental-placement (ly:engraver-make-grob + translator + 'AccidentalPlacement + (ambitus-note-accidental (ambitus-note ambitus DOWN))))) + ;; For lower and upper ambitus notes: + (for-each (lambda (direction) + (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction)))) + ;; set the cause and the staff position of the ambitus note + ;; according to the associated pitch + (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) + 'cause) + (ambitus-note-cause (ambitus-note ambitus direction))) + (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) + 'staff-position) + (+ (ambitus-start-c0 ambitus) + (ly:pitch-steps pitch))) + ;; determine if an accidental shall be printed for this note, + ;; according to the key signature + (let* ((handle (or (assoc (cons (ly:pitch-octave pitch) + (ly:pitch-notename pitch)) + (ambitus-start-key-sig ambitus)) + (assoc (ly:pitch-notename pitch) + (ambitus-start-key-sig ambitus)))) + (sig-alter (if handle (cdr handle) 0))) + (cond ((= (ly:pitch-alteration pitch) sig-alter) + ;; the note alteration is in the key signature + ;; => it does not have to be printed + (ly:grob-suicide! + (ambitus-note-accidental (ambitus-note ambitus direction))) + (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction)) + 'accidental-grob) + '())) + (else + ;; otherwise, the accidental shall be printed + (set! (ly:grob-property (ambitus-note-accidental + (ambitus-note ambitus direction)) + 'alteration) + (ly:pitch-alteration pitch))))) + ;; add the AccidentalPlacement grob to the + ;; conditional items of the AmbitusNoteHead + (ly:separation-item::add-conditional-item + (ambitus-note-head (ambitus-note ambitus direction)) + accidental-placement) + ;; add the AmbitusAccidental to the list of the + ;; AccidentalPlacement grob accidentals + (ly:accidental-placement::add-accidental + accidental-placement + (ambitus-note-accidental (ambitus-note ambitus direction))) + ;; add the AmbitusNoteHead grob to the AmbitusLine grob + (ly:pointer-group-interface::add-grob + (ambitus-line ambitus) + 'note-heads + (ambitus-note-head (ambitus-note ambitus direction))))) + (list DOWN UP)) + ;; add the AccidentalPlacement grob to the main Ambitus grob + (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement)) + ;; no notes ==> suicide the grobs + (begin + (for-each (lambda (direction) + (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction))) + (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction)))) + (list DOWN UP)) + (ly:grob-suicide! ambitus-line)))) + +%%% +%%% Ambitus engraver definition +%%% +#(define ambitus-engraver + (lambda (context) + (let ((ambitus #f)) + ;; when music is processed: make the ambitus object, if not already built + `((process-music . ,(lambda (translator) + (if (not ambitus) + (set! ambitus (make-ambitus translator))))) + ;; set the ambitus clef and key signature state + (stop-translation-timestep . ,(lambda (translator) + (if ambitus + (initialize-ambitus-state ambitus translator)))) + ;; when a note-head grob is built, update the ambitus notes + (acknowledgers + (note-head-interface . ,(lambda (engraver grob source-engraver) + (if ambitus + (update-ambitus-notes ambitus grob))))) + ;; finally, typeset the ambitus according to its upper and lower notes + ;; (if any). + (finalize . ,(lambda (translator) + (if ambitus + (typeset-ambitus ambitus translator)))))))) + +%%% +%%% Example +%%% + +\score { + \new StaffGroup << + \new Staff { c'4 des' e' fis' gis' } + \new Staff { \clef "bass" c4 des ~ des ees b, } + >> + \layout { \context { \Staff \consists #ambitus-engraver } } +} diff --git a/Documentation/snippets/new/dot-count-override.ly b/Documentation/snippets/new/dot-count-override.ly deleted file mode 100644 index 8e183fd986..0000000000 --- a/Documentation/snippets/new/dot-count-override.ly +++ /dev/null @@ -1,17 +0,0 @@ -\version "2.13.26" -\header { - lsrtags = "rhythms,expressive-marks" - texidoc = "This code demonstrates how to change the number of -augmentation dots on a single note." - doctitle = "Changing the number of augmentation dots per note" -} - -\relative c' { - c4.. a16 r2 | - \override Dots #'dot-count = #4 - c4.. a16 r2 | - \override Dots #'dot-count = #0 - c4.. a16 r2 | - \revert Dots #'dot-count - c4.. a16 r2 | -} diff --git a/Documentation/snippets/new/fretted-headword.ly b/Documentation/snippets/new/fretted-headword.ly index 69c64ce7cc..d88039a5ce 100644 --- a/Documentation/snippets/new/fretted-headword.ly +++ b/Documentation/snippets/new/fretted-headword.ly @@ -3,7 +3,7 @@ % on melodies from Bellini's "Norma" % %*****************************************************************% -\version "2.13.20" +\version "2.13.29" #(set-global-staff-size 15) \paper { @@ -114,9 +114,7 @@ bass = \relative c { e,1 | % m. 4 %% new section starts here in A minor - \overrideBeamSettings #'Score #'(4 . 4) #'end - #'((* . (1 1 1 1)) - ((1 . 12) . (3 3 3 3))) + \set Score.beamExceptions = #'() \once \override TextScript #'staff-padding = #1.7 \times 2/3 { a8\p^\andantino e' a c a e a, e' a c a e } | % m. 5 diff --git a/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly b/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly new file mode 100644 index 0000000000..2d353006ef --- /dev/null +++ b/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly @@ -0,0 +1,15 @@ +\version "2.13.26" +\header { + lsrtags = "pitches" + texidoc = "This shows how to hide accidentals on tied notes at the beginning of a +new system." + doctitle = "Hiding accidentals on tied notes at the beginning of a new system" +} + +\relative c'' { + \override Accidental #'hide-tied-accidental-after-break = ##t + cis1~ cis~ + \break + cis +} + diff --git a/Documentation/snippets/new/reverting-default-beam-endings.ly b/Documentation/snippets/new/reverting-default-beam-endings.ly index fce28adcd8..0dad36760d 100644 --- a/Documentation/snippets/new/reverting-default-beam-endings.ly +++ b/Documentation/snippets/new/reverting-default-beam-endings.ly @@ -1,11 +1,10 @@ -\version "2.13.4" +\version "2.13.29" \header { lsrtags = "rhythms" texidoc = " -To typeset beams grouped @code{3-4-3-2} in 12/8 it is no longer -necessary first to override the default beam endings in 12/8,and -then to set up the new beaming endings: +To typeset beams grouped @code{3-4-3-2} one need only change the +beat structure: " doctitle = "Reverting default beam endings" } @@ -17,7 +16,6 @@ then to set up the new beaming endings: a8 a a a a a a a a a a a % Set new values for beam endings - \overrideBeamSettings #'Score #'(12 . 8) #'end - #'((* . (3 4 3 2))) + \set Score.beatStructure = #'(3 4 3 2) a8 a a a a a a a a a a a } diff --git a/Documentation/snippets/new/scheme-engraver-ambitus.ly b/Documentation/snippets/new/scheme-engraver-ambitus.ly deleted file mode 100644 index be832c901e..0000000000 --- a/Documentation/snippets/new/scheme-engraver-ambitus.ly +++ /dev/null @@ -1,323 +0,0 @@ -\version "2.13.15" - -\header { - - lsrtags = "contexts-and-engravers" - - - texidoc = "This example demonstrates how the ambitus engraver may be - defined on the user side, with a Scheme engraver. - - This is basically a rewrite in Scheme of the code from - @file{lily/ambitus-engraver.cc}. -" - - doctitle = "Defining an engraver in Scheme: ambitus engraver" -} - -#(use-modules (oop goops)) - -%%% -%%% Grob utilities -%%% -%%% These are literal rewrites of some C++ methods used by the ambitus engraver. -#(define (ly:event::in-event-class event class-name) - "Check if @var{event} the given class. -Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}." - (memq class-name (ly:make-event-class (ly:event-property event 'class)))) - -#(define (ly:separation-item::add-conditional-item grob grob-item) - "Add @var{grob-item} to the array of conditional elements of @var{grob}. -Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}." - (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item)) - -#(define (ly:accidental-placement::accidental-pitch accidental-grob) - "Get the pitch from the grob cause of @var{accidental-grob}. -Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}." - (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause) - 'pitch)) - -#(define (ly:accidental-placement::add-accidental grob accidental-grob) - "Add @var{accidental-grob}, an @code{Accidental} grob, to the -list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement} -grob. -Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}." - (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob))) - (set! (ly:grob-parent accidental-grob X) grob) - (set! (ly:grob-property accidental-grob 'X-offset) - ly:grob::x-parent-positioning) - (let* ((accidentals (ly:grob-object grob 'accidental-grobs)) - (handle (assq (ly:pitch-notename pitch) accidentals)) - (entry (if handle (cdr handle) '()))) - (set! (ly:grob-object grob 'accidental-grobs) - (assq-set! accidentals - (ly:pitch-notename pitch) - (cons accidental-grob entry)))))) - -%%% -%%% Ambitus data structure -%%% - -%%% The class holds the various grobs that are created -%%% to print an ambitus: -%%% - ambitus-group: the grob that groups all the components of an ambitus -%%% (Ambitus grob); -%%% - ambitus-line: the vertical line between the upper and lower ambitus -%%% notes (AmbitusLine grob); -%%% - ambitus-up-note and ambitus-down-note: the note head and accidental -%%% for the lower and upper note of the ambitus (see class -%%% below). -%%% The other slots define the key and clef context of the engraver: -%%% - start-c0: position of middle c at the beginning of the piece. It -%%% is used to place the ambitus notes according to their pitch; -%%% - start-key-sig: the key signature at the beginning of the piece. It -%%% is used to determine if accidentals shall be printed next to ambitus -%%% notes. - -#(define-class () - (ambitus-group #:accessor ambitus-group) - (ambitus-line #:accessor ambitus-line) - (ambitus-up-note #:getter ambitus-up-note - #:init-form (make )) - (ambitus-down-note #:getter ambitus-down-note - #:init-form (make )) - (start-c0 #:accessor ambitus-start-c0 - #:init-value #f) - (start-key-sig #:accessor ambitus-start-key-sig - #:init-value '())) - -%%% Accessor for the lower and upper note data of an ambitus -#(define-method (ambitus-note (ambitus ) direction) - "If @var{direction} is @code{UP}, then return the upper ambitus note -of @var{ambitus}, otherwise return the lower ambitus note." - (if (= direction UP) - (ambitus-up-note ambitus) - (ambitus-down-note ambitus))) - -%%% The class holds the grobs that are specific to ambitus -%%% (lower and upper) notes: -%%% - head: an AmbitusNoteHead grob; -%%% - accidental: an AmbitusAccidental grob, to be possibly printed next -%%% to the ambitus note head. -%%% Moreover: -%%% - pitch is the absolute pitch of the note -%%% - cause is the note event that causes this ambitus note, i.e. the lower -%%% or upper note of the considered music sequence. - -#(define-class () - (head #:accessor ambitus-note-head - #:init-value #f) - (accidental #:accessor ambitus-note-accidental - #:init-value #f) - (cause #:accessor ambitus-note-cause - #:init-value #f) - (pitch #:accessor ambitus-note-pitch - #:init-value #f)) - -%%% -%%% Ambitus engraving logics -%%% -%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}. - -#(define (make-ambitus translator) - "Build an ambitus object: initialize all the grobs and their relations. - -The Ambitus grob contain all other grobs: - Ambitus - |- AmbitusLine - |- AmbitusNoteHead for upper note - |- AmbitusAccidental for upper note - |- AmbitusNoteHead for lower note - |- AmbitusAccidental for lower note - -The parent of an accidental is the corresponding note head, -and the accidental is set as the 'accidental-grob of the note head -so that is printed by the function that prints notes." - ;; make the ambitus object - (let ((ambitus (make ))) - ;; build the Ambitus grob, which will contain all other grobs - (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '())) - ;; build the AmbitusLine grob (line between lower and upper note) - (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '())) - ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental - (for-each (lambda (direction) - (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '())) - (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '())) - (group (ambitus-group ambitus))) - ;; The parent of the AmbitusAccidental grob is the - ;; AmbitusNoteHead grob - (set! (ly:grob-parent accidental Y) head) - ;; The AmbitusAccidental grob is set as the accidental-grob - ;; object of the AmbitusNoteHead. This is later used by the - ;; function that prints notes. - (set! (ly:grob-object head 'accidental-grob) accidental) - ;; both the note head and the accidental grobs are added - ;; to the main ambitus grob. - (ly:axis-group-interface::add-element group head) - (ly:axis-group-interface::add-element group accidental) - ;; the note head and the accidental grobs are added to the - ;; ambitus object - (set! (ambitus-note-head (ambitus-note ambitus direction)) - head) - (set! (ambitus-note-accidental (ambitus-note ambitus direction)) - accidental))) - (list DOWN UP)) - ;; The parent of the ambitus line is the lower ambitus note head - (set! (ly:grob-parent (ambitus-line ambitus) X) - (ambitus-note-head (ambitus-note ambitus DOWN))) - ;; the ambitus line is added to the ambitus main grob - (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus)) - ambitus)) - -#(define-method (initialize-ambitus-state (ambitus ) translator) - "Initialize the state of @var{ambitus}, by getting the starting -position of middle C and key signature from @var{translator}'s context." - (if (not (ambitus-start-c0 ambitus)) - (begin - (set! (ambitus-start-c0 ambitus) - (ly:context-property (ly:translator-context translator) - 'middleCPosition - 0)) - (set! (ambitus-start-key-sig ambitus) - (ly:context-property (ly:translator-context translator) - 'keySignature))))) - -#(define-method (update-ambitus-notes (ambitus ) note-grob) - "Update the upper and lower ambitus pithes of @var{ambitus}, using -@var{note-grob}." - ;; Get the event that caused the note-grob creation - ;; and check that it is a note-event. - (let ((note-event (ly:grob-property note-grob 'cause))) - (if (ly:event::in-event-class note-event 'note-event) - ;; get the pitch from the note event - (let ((pitch (ly:event-property note-event 'pitch))) - ;; if this pitch is lower than the current ambitus lower - ;; note pitch (or it has not been initialized yet), - ;; then this pitch is the new ambitus lower pitch, - ;; and conversely for upper pitch. - (for-each (lambda (direction pitch-compare) - (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction))) - (pitch-compare pitch - (ambitus-note-pitch (ambitus-note ambitus direction)))) - (begin - (set! (ambitus-note-pitch (ambitus-note ambitus direction)) - pitch) - (set! (ambitus-note-cause (ambitus-note ambitus direction)) - note-event)))) - (list DOWN UP) - (list ly:pitch) translator) - "Typeset the ambitus: -- place the lower and upper ambitus notes according to their pitch and - the position of the middle C; -- typeset or delete the note accidentals, according to the key signature. - An accidental, if it is to be printed, is added to an AccidentalPlacement - grob (a grob dedicated to the placement of accidentals near a chord); -- both note heads are added to the ambitus line grob, so that a line should - be printed between them." - ;; check if there are lower and upper pitches - (if (and (ambitus-note-pitch (ambitus-note ambitus UP)) - (ambitus-note-pitch (ambitus-note ambitus DOWN))) - ;; make an AccidentalPlacement grob, for placement of note accidentals - (let ((accidental-placement (ly:engraver-make-grob - translator - 'AccidentalPlacement - (ambitus-note-accidental (ambitus-note ambitus DOWN))))) - ;; For lower and upper ambitus notes: - (for-each (lambda (direction) - (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction)))) - ;; set the cause and the staff position of the ambitus note - ;; according to the associated pitch - (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) - 'cause) - (ambitus-note-cause (ambitus-note ambitus direction))) - (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) - 'staff-position) - (+ (ambitus-start-c0 ambitus) - (ly:pitch-steps pitch))) - ;; determine if an accidental shall be printed for this note, - ;; according to the key signature - (let* ((handle (or (assoc (cons (ly:pitch-octave pitch) - (ly:pitch-notename pitch)) - (ambitus-start-key-sig ambitus)) - (assoc (ly:pitch-notename pitch) - (ambitus-start-key-sig ambitus)))) - (sig-alter (if handle (cdr handle) 0))) - (cond ((= (ly:pitch-alteration pitch) sig-alter) - ;; the note alteration is in the key signature - ;; => it does not have to be printed - (ly:grob-suicide! - (ambitus-note-accidental (ambitus-note ambitus direction))) - (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction)) - 'accidental-grob) - '())) - (else - ;; otherwise, the accidental shall be printed - (set! (ly:grob-property (ambitus-note-accidental - (ambitus-note ambitus direction)) - 'alteration) - (ly:pitch-alteration pitch))))) - ;; add the AccidentalPlacement grob to the - ;; conditional items of the AmbitusNoteHead - (ly:separation-item::add-conditional-item - (ambitus-note-head (ambitus-note ambitus direction)) - accidental-placement) - ;; add the AmbitusAccidental to the list of the - ;; AccidentalPlacement grob accidentals - (ly:accidental-placement::add-accidental - accidental-placement - (ambitus-note-accidental (ambitus-note ambitus direction))) - ;; add the AmbitusNoteHead grob to the AmbitusLine grob - (ly:pointer-group-interface::add-grob - (ambitus-line ambitus) - 'note-heads - (ambitus-note-head (ambitus-note ambitus direction))))) - (list DOWN UP)) - ;; add the AccidentalPlacement grob to the main Ambitus grob - (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement)) - ;; no notes ==> suicide the grobs - (begin - (for-each (lambda (direction) - (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction))) - (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction)))) - (list DOWN UP)) - (ly:grob-suicide! ambitus-line)))) - -%%% -%%% Ambitus engraver definition -%%% -#(define ambitus-engraver - (lambda (context) - (let ((ambitus #f)) - ;; when music is processed: make the ambitus object, if not already built - `((process-music . ,(lambda (translator) - (if (not ambitus) - (set! ambitus (make-ambitus translator))))) - ;; set the ambitus clef and key signature state - (stop-translation-timestep . ,(lambda (translator) - (if ambitus - (initialize-ambitus-state ambitus translator)))) - ;; when a note-head grob is built, update the ambitus notes - (acknowledgers - (note-head-interface . ,(lambda (engraver grob source-engraver) - (if ambitus - (update-ambitus-notes ambitus grob))))) - ;; finally, typeset the ambitus according to its upper and lower notes - ;; (if any). - (finalize . ,(lambda (translator) - (if ambitus - (typeset-ambitus ambitus translator)))))))) - -%%% -%%% Example -%%% - -\score { - \new StaffGroup << - \new Staff { c'4 des' e' fis' gis' } - \new Staff { \clef "bass" c4 des ~ des ees b, } - >> - \layout { \context { \Staff \consists #ambitus-engraver } } -} diff --git a/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly b/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly new file mode 100644 index 0000000000..70d10fbb48 --- /dev/null +++ b/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly @@ -0,0 +1,19 @@ +\version "2.13.26" +\header { + lsrtags = "repeats" + texidoc = "There are three different styles of double repeats for +volte, that can be set using @code{doubleRepeatType}." + + doctitle = "Setting the double repeat default for volte" +} + + +\relative c'' { + \repeat volta 1 { c1 } + \set Score.doubleRepeatType = #":|:" + \repeat volta 1 { c1 } + \set Score.doubleRepeatType = #":|.|:" + \repeat volta 1 { c1 } + \set Score.doubleRepeatType = #":|.:" + \repeat volta 1 { c1 } +} diff --git a/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly b/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly new file mode 100644 index 0000000000..6a1a663820 --- /dev/null +++ b/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly @@ -0,0 +1,36 @@ +\version "2.13.27" + +\header { + lsrtags = "expressive-marks, tweaks-and-overrides" + + texidoc = " +By default, LilyPond does not allow the same articulation (e.g., an +accent, a fermata, a flageolet, etc.) to be displayed above and below a +note. For example, @code{c4_\\fermata^\\fermata} will only show a fermata +below, ignoring the fermata above. However, one can stick +scripts (just like fingerings) inside a chord, which means it is +possible to have as many articulations as desired. So, the solution is to +write the note as a chord and add the articulations inside the @code{<@dots{}>}. +" + doctitle = "Showing the same articulation above and below a note or chord" +} + +% The same as \flageolet, just a little smaller +smallFlageolet = +#(let ((m (make-articulation "flageolet"))) + (set! (ly:music-property m 'tweaks) + (acons 'font-size -2 + (ly:music-property m 'tweaks))) + m) + +\relative c' { + s4^"Wrong:" + c4_\fermata^\fermata % The second fermata is ignored! + 4^\smallFlageolet_\smallFlageolet + + s4^"Works if written inside a chord:" + 4 + 4 + 4 + 4 +} diff --git a/Documentation/snippets/new/subdividing-beams.ly b/Documentation/snippets/new/subdividing-beams.ly new file mode 100644 index 0000000000..963e44c0e2 --- /dev/null +++ b/Documentation/snippets/new/subdividing-beams.ly @@ -0,0 +1,40 @@ +\version "2.13.29" + +\header { + lsrtags = "rhythms" + + texidoc = " +The beams of consecutive 16th (or shorter) notes are, by default, not +subdivided. That is, the three (or more) beams stretch unbroken over +entire groups of notes. This behavior can be modified to subdivide +the beams into sub-groups by setting the property +@code{subdivideBeams}. When set, multiple beams will be subdivided at +intervals defined by the current value of @code{baseMoment} by reducing +the multiple beams to just one beam between the sub-groups. Note that +@code{baseMoment} defaults to one over the denominator of the current +time signature if not set explicitly. It must be set to a fraction +giving the duration of the beam sub-group using the +@code{ly:make-moment} function, as shown in this snippet. Also, when +@code{baseMoment} is changed, @code{beatStructure} should also be changed +to match the new @code{baseMoment}: + +" + doctitle = "Subdividing beams" +} + +\relative c'' { + c32[ c c c c c c c] + \set subdivideBeams = ##t + c32[ c c c c c c c] + + % Set beam sub-group length to an eighth note + \set baseMoment = #(ly:make-moment 1 8) + \set beatStructure = #'(2 2 2 2) + c32[ c c c c c c c] + + % Set beam sub-group length to a sixteenth note + \set baseMoment = #(ly:make-moment 1 16) + \set beatStructure = #'(4 4 4 4) + c32[ c c c c c c c] +} + 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 index 82f01ee581..2f458f2cfd 100644 --- a/Documentation/snippets/new/vocal-ensemble-template-with-verse-and-refrain.ly +++ b/Documentation/snippets/new/vocal-ensemble-template-with-verse-and-refrain.ly @@ -9,7 +9,7 @@ use of spacer rests within the @code{\global} variable to define meter changes (and other elements common to all parts) throughout the entire score. " - doctitle = "Solo verse and two-part refrain" + doctitle = "Vocal ensemble template with verse and refrain" } global = { diff --git a/Documentation/snippets/non-default-tuplet-numbers.ly b/Documentation/snippets/non-default-tuplet-numbers.ly index 2e775ae436..909f9b938e 100644 --- a/Documentation/snippets/non-default-tuplet-numbers.ly +++ b/Documentation/snippets/non-default-tuplet-numbers.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.1 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " LilyPond también proporciona funciones de formato para imprimir números de grupo especial diferentes a la propia fracción, así diff --git a/Documentation/snippets/non-traditional-key-signatures.ly b/Documentation/snippets/non-traditional-key-signatures.ly index 8e2e7f973e..df9a8b630d 100644 --- a/Documentation/snippets/non-traditional-key-signatures.ly +++ b/Documentation/snippets/non-traditional-key-signatures.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.0 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Armaduras de tonalidad no tradicionales" texidoces = " diff --git a/Documentation/snippets/numbers-as-easy-note-heads.ly b/Documentation/snippets/numbers-as-easy-note-heads.ly index 588a89246f..bfeaa9d433 100644 --- a/Documentation/snippets/numbers-as-easy-note-heads.ly +++ b/Documentation/snippets/numbers-as-easy-note-heads.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.11 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las cabezas de nota de notación fácil utilizan la propiedad diff --git a/Documentation/snippets/orchestra,-choir-and-piano-template.ly b/Documentation/snippets/orchestra,-choir-and-piano-template.ly index cad233e3fd..286cf3d4bc 100644 --- a/Documentation/snippets/orchestra,-choir-and-piano-template.ly +++ b/Documentation/snippets/orchestra,-choir-and-piano-template.ly @@ -6,7 +6,7 @@ \header { lsrtags = "template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta plantilla muestra el uso de contextos @code{StaffGroup} y @@ -19,7 +19,6 @@ a Do antes de ser asignada a una variable. " doctitlees = "Plantilla de orquesta con coro y piano" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour diff --git a/Documentation/snippets/ottava-text.ly b/Documentation/snippets/ottava-text.ly index d468b9c46a..e81f10d54e 100644 --- a/Documentation/snippets/ottava-text.ly +++ b/Documentation/snippets/ottava-text.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches, text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Internamente, @code{\\ottava} establece las propiedades @@ -19,7 +19,6 @@ ajuste @code{ottavation} después de invocar la instrucción doctitlees = "Texto de octava alta y baja" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Intern setzt die @code{set-octavation}-Funktion die Eigenschaften @@ -31,7 +30,6 @@ und @code{middleCPosition}. Um den Text der Oktavierungsklammer zu " doctitlede = "Ottava-Text" - %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e texidocfr = " En interne, la fonction @code{\\ottava} détermine les diff --git a/Documentation/snippets/percent-repeat-count-visibility.ly b/Documentation/snippets/percent-repeat-count-visibility.ly index fd09e891e3..3cab18f999 100644 --- a/Documentation/snippets/percent-repeat-count-visibility.ly +++ b/Documentation/snippets/percent-repeat-count-visibility.ly @@ -6,7 +6,7 @@ \header { lsrtags = "repeats, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden mostrar los contadores de las repeticiones del tipo porcentaje a intervalos regulares mediante el establecimiento de @@ -15,14 +15,12 @@ la propiedad de contexto @code{repeatCountVisibility}. " doctitlees = "Visibilidad del contador de repeticiones de tipo porcentaje" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Prozentwiederholungszähler können in regelmäßigen Intervallen angezeigt werden, indem man die Eigenschaft @code{repeatCountVisibility} beeinflusst. " doctitlede = "Sichtbarkeit von Prozent-Wiederholungen" - %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 texidocfr = " Le numéro de mesure répétée sera imprimé à intervalle régulier si vous diff --git a/Documentation/snippets/percent-repeat-counter.ly b/Documentation/snippets/percent-repeat-counter.ly index 2e420dcab5..74e4e5aa5e 100644 --- a/Documentation/snippets/percent-repeat-counter.ly +++ b/Documentation/snippets/percent-repeat-counter.ly @@ -6,7 +6,7 @@ \header { lsrtags = "repeats" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las repeticiones de compases completos mayores de dos repeticiones pueden llevar un contador si se activa la propiedad adecuada, como se @@ -15,7 +15,6 @@ ve en este ejemplo: " doctitlees = "Percent repeat counter" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ganztaktwiederholungen mit mehr als zwei Wiederholungen erhalten einen @@ -23,7 +22,6 @@ Zähler, wenn man die entsprechende Eigenschaft einsetzt: " doctitlede = "Prozent-Wiederholungen zählen" - %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 texidocfr = " Les répétitions de plus de 2 mesures sont surmontées d'un compteur, diff --git a/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly b/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly index 38d3b9d62a..5922d319c2 100644 --- a/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly +++ b/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra" texidoces = " Este ejemplo artificial muestra cómo se pueden permitir tanto los @@ -16,7 +16,6 @@ sincopados se deben barrar manualmente. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Dieses künstliche Beispiel zeigt, wie sowohl automatische als auch @@ -28,7 +27,6 @@ gesetzt werden. doctitlede = "Zeilenumbrüche bei N-tolen mit Balken erlauben" - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " Cet exemple peu académique démontre comment il est possible d'insérer un saut diff --git a/Documentation/snippets/piano-template-simple.ly b/Documentation/snippets/piano-template-simple.ly index 8639f99b25..ebd1ce76e8 100644 --- a/Documentation/snippets/piano-template-simple.ly +++ b/Documentation/snippets/piano-template-simple.ly @@ -6,7 +6,7 @@ \header { lsrtags = "keyboards, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Presentamos a continuación una plantilla de piano sencilla con algunas notas. @@ -14,14 +14,12 @@ notas. " doctitlees = "Plantilla de piano (sencilla)" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Hier ein einfaches Klaviersystem. " doctitlede = "Vorlage für einfache Klaviernotation" - %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 texidocfr = " Voici une simple partition pour piano avec quelques notes. diff --git a/Documentation/snippets/piano-template-with-centered-dynamics.ly b/Documentation/snippets/piano-template-with-centered-dynamics.ly index 8afd810022..a1843fbd44 100644 --- a/Documentation/snippets/piano-template-with-centered-dynamics.ly +++ b/Documentation/snippets/piano-template-with-centered-dynamics.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Muchas partituras de piano tienen las indicaciones dinámicas centradas entre los dos pentagramas. El contexto @code{Dynamics}, si se sitúa diff --git a/Documentation/snippets/piano-template-with-centered-lyrics.ly b/Documentation/snippets/piano-template-with-centered-lyrics.ly index 7dc03b30ed..3f36c03346 100644 --- a/Documentation/snippets/piano-template-with-centered-lyrics.ly +++ b/Documentation/snippets/piano-template-with-centered-lyrics.ly @@ -6,7 +6,7 @@ \header { lsrtags = "text, keyboards, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " En lugar de tener un pentagrama dedicado a la melodía y la letra, ésta se puede centrar entre los pentagramas de un sistema de piano. @@ -14,12 +14,10 @@ se puede centrar entre los pentagramas de un sistema de piano. " doctitlees = "Plantilla de piano con letra centrada" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " 旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。 " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Anstatt ein eigenes System für Melodie und Text zu schreiben, können @@ -27,7 +25,6 @@ Sie den Text auch zwischen die beiden Klaviersysteme schreiben (und damit das zusätzliche System für die Gesangstimme auslassen). " - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément diff --git a/Documentation/snippets/piano-template-with-melody-and-lyrics.ly b/Documentation/snippets/piano-template-with-melody-and-lyrics.ly index a3dde0e648..028afb5127 100644 --- a/Documentation/snippets/piano-template-with-melody-and-lyrics.ly +++ b/Documentation/snippets/piano-template-with-melody-and-lyrics.ly @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music, keyboards, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " He aquí el típico formato dde una canción: un pentagrama con la melodía y la letra, y el acompañamiento de piano por debajo. @@ -14,12 +14,10 @@ melodía y la letra, y el acompañamiento de piano por debajo. " doctitlees = "Plantilla de piano con melodía y letra" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。 " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Das nächste Beispiel ist typisch für ein Lied: Im oberen System die @@ -28,7 +26,6 @@ Melodie mit Text, darunter Klavierbegleitung. doctitlede = "Vorlage für Klavier und Gesangsstimme" - %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 texidocfr = " Il s'agit du format classique pour le chant : une portée pour la mélodie diff --git a/Documentation/snippets/pitches-headword.ly b/Documentation/snippets/pitches-headword.ly index bce85cee0f..ef3b20a136 100644 --- a/Documentation/snippets/pitches-headword.ly +++ b/Documentation/snippets/pitches-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) \paper { diff --git a/Documentation/snippets/pitches.snippet-list b/Documentation/snippets/pitches.snippet-list index b44974a67f..bf4ff52ab0 100644 --- a/Documentation/snippets/pitches.snippet-list +++ b/Documentation/snippets/pitches.snippet-list @@ -3,10 +3,14 @@ altering-the-length-of-beamed-stems.ly ambitus-with-multiple-voices.ly ambitus.ly applying-note-head-styles-depending-on-the-step-of-the-scale.ly +changing-the-ambitus-gap.ly +changing-the-interval-of-lines-on-the-stave.ly +clefs-can-be-transposed-by-arbitrary-amounts.ly coloring-notes-depending-on-their-pitch.ly creating-a-sequence-of-notes-on-various-pitches.ly dodecaphonic-style-accidentals-for-each-note-including-naturals.ly generating-random-notes.ly +hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly keep-change-clefs-full-sized.ly makam-example.ly non-traditional-key-signatures.ly diff --git a/Documentation/snippets/placement-of-right-hand-fingerings.ly b/Documentation/snippets/placement-of-right-hand-fingerings.ly index 218875f3ba..19e9645a25 100644 --- a/Documentation/snippets/placement-of-right-hand-fingerings.ly +++ b/Documentation/snippets/placement-of-right-hand-fingerings.ly @@ -6,7 +6,7 @@ \header { lsrtags = "fretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Es posible ejercer un mayor control sobre la colocación de las digitaciones de la mano derecha estableciendo el valor de una @@ -16,7 +16,6 @@ se debe usar una construcción de acorde. " doctitlees = "Posicionamiento de digitaciones de mano derecha" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Man kann die Positionierung von Fingersatz der rechten Hand besser @@ -25,7 +24,6 @@ das folgende Beispiel zeigt: " doctitlede = "Positionierung von Fingersatz der rechten Hand" - %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b texidocfr = " diff --git a/Documentation/snippets/polyphony-in-tablature.ly b/Documentation/snippets/polyphony-in-tablature.ly index 2a05b4c447..c40551a92d 100644 --- a/Documentation/snippets/polyphony-in-tablature.ly +++ b/Documentation/snippets/polyphony-in-tablature.ly @@ -6,7 +6,7 @@ \header { lsrtags = "fretted-strings" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La polifonía se crea de la misma forma en un @code{TabStaff} que en una pauta normal. @@ -14,7 +14,6 @@ en una pauta normal. " doctitlees = "Polifonía en tablaturas" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Polyphonie kann in einer Tabulatur (@code{TabStaff}) genauso wie in einem @@ -22,7 +21,6 @@ normalen Notensystem erstellt werden. " doctitlede = "Polyphonie in einer Tabulatur" - %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b texidocfr = " diff --git a/Documentation/snippets/positioning-arpeggios.ly b/Documentation/snippets/positioning-arpeggios.ly index 0fabbbae13..e89e4612a6 100644 --- a/Documentation/snippets/positioning-arpeggios.ly +++ b/Documentation/snippets/positioning-arpeggios.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Si necesitamos alargar o acortar un símbolo de arpegio, podemos modificar independientemente los extremos superior e inferior. 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 1b07b9d79b..e679ff4f27 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 @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Cuando se colocan figuras sobre líneas adicionales, sus barras se diff --git a/Documentation/snippets/positioning-grace-notes-with-floating-space.ly b/Documentation/snippets/positioning-grace-notes-with-floating-space.ly index 607783ab24..04fad35181 100644 --- a/Documentation/snippets/positioning-grace-notes-with-floating-space.ly +++ b/Documentation/snippets/positioning-grace-notes-with-floating-space.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al establecer la propiedad @code{'strict-grace-spacing} hacemos que @@ -21,7 +21,6 @@ columnas musicales de las notas principales. doctitlees = "Posicionamiento de las notas de adorno con espacio flotante" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn man die Eigenschaft @code{'strict-grace-spacing} aktiviert, @@ -34,7 +33,6 @@ Hauptnote gesetzt. doctitlede = "Positionierung von Verzierungen mit verschiebbarem Platz" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Lorsque vous activez la propriété @code{'strict-grace-spacing}, diff --git a/Documentation/snippets/positioning-multi-measure-rests.ly b/Documentation/snippets/positioning-multi-measure-rests.ly index 1126ddd7d6..cd45616f6b 100644 --- a/Documentation/snippets/positioning-multi-measure-rests.ly +++ b/Documentation/snippets/positioning-multi-measure-rests.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Posicionar los silencios multicompás" texidoces = " A diferencia de los silencios normales, no existe una instrucción @@ -19,7 +19,6 @@ colocación de los silencios multicompás se puede controlar como se ve a continuación: " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Anders als bei normalen Pausen gibt es keinen direkten Befehl, um die @@ -32,7 +31,6 @@ werden: doctitlede = "Positionierung von Ganztaktpausen" - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " Si l'on peut positionner verticalement un silence simple en le diff --git a/Documentation/snippets/positioning-text-markups-inside-slurs.ly b/Documentation/snippets/positioning-text-markups-inside-slurs.ly index 20619670dd..50f5931141 100644 --- a/Documentation/snippets/positioning-text-markups-inside-slurs.ly +++ b/Documentation/snippets/positioning-text-markups-inside-slurs.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los elementos de marcado de texto deben tener la propiedad @@ -16,7 +16,6 @@ impriman por dentro de las ligaduras de expresión. " doctitlees = "Situar los elementos de marcado de texto por dentro de las ligaduras" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die @@ -24,7 +23,6 @@ Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die " doctitlede = "Textbeschriftung innerhalb von Bögen positionieren" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison, 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 8fb9a85b0f..37444d77bd 100644 --- a/Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly +++ b/Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Evitar que se añadan becuadros adicionales automáticamente" texidoces = " @@ -19,7 +19,6 @@ dentro del contexto de @code{Staff}. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 doctitlede = "Verhindern, dass zusätzliche Auflösungszeichen automatisch hinzugefügt werden" @@ -30,7 +29,6 @@ ein vorheriges Versetzungszeichen der gleichen Note aufgehoben werden soll. Um dieses Verhalten zu ändern, muss die Eigenschaft @code{extraNatural} im @code{Staff}-Kontext auf \"false\" gesetzt werden. " - %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e texidocfr = " En accord avec les règles standards de l'écriture musicale, on grave 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 f3646550d6..9b8d703a21 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 @@ -6,7 +6,7 @@ \header { lsrtags = "pitches" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura" texidoces = " @@ -18,7 +18,6 @@ propiedad @code{printKeyCancellation} del contexto @code{Staff}. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 doctitlede = "Auflösungzeichen nicht setzen wenn die Tonart wechselt" @@ -28,7 +27,6 @@ um Versetzungszeichen der vorherigen Tonart aufzulösen. Das kann verhindert werden, indem die @code{printKeyCancellation}-Eigenschaft im @code{Staff}-Kontext auf \"false\" gesetzt wird. " - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Après un changement de tonalité, un bécarre est imprimé pour annuler 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 ad8bb2dbcf..eb8ab4feb9 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 @@ -6,7 +6,7 @@ \header { lsrtags = "repeats, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede imprimir una línea divisoria de la forma @code{|:} al principio de la pieza, sobreescribiendo la propiedad correspondiente: @@ -14,7 +14,6 @@ principio de la pieza, sobreescribiendo la propiedad correspondiente: " doctitlees = "Imprimir puntos de repetición al prinicpio de la pieza" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ein @code{|:}-Taktstrich kann auch zu Beginn eines Stückes ausgegeben werden, indem @@ -22,7 +21,6 @@ man die entsprechende Eigenschaft verändert: " doctitlede = "Ein Wiederholungszeichen zu Beginn eines Stückes ausgeben" - %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 texidocfr = " Bien qu'allant à l'encontre des usages en matière de gravure, vous diff --git a/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly b/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly index 3a0d1de68e..b31edf16f1 100644 --- a/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly +++ b/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden imprimir los números de compás a intervalos regulares @@ -19,7 +19,6 @@ imprimen a cada dos compases excepto al final de la línea. doctitlees = "Imprimir números de compás a intervalos regulares" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Taktnummern können in regelmäßigen Intervallen gesetzt werden, indem @@ -31,7 +30,6 @@ am Ende einer Zeile. doctitlede = "Setzen der Taktnummern in regelmäßigen Intevallen" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt 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 c27b3d3539..19b1b54757 100644 --- a/Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly +++ b/Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias. @@ -15,7 +15,6 @@ Los números de compás también se pueden imprimir dentro de rectángulos o de doctitlees = "Imprimir números de compás dentro de rectángulos o circunferencias" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Taktnummern können auch in Boxen oder Kreisen gesetzt werden. @@ -24,7 +23,6 @@ Taktnummern können auch in Boxen oder Kreisen gesetzt werden. doctitlede = "Setzen von Taktnummern in Kästen oder Kreisen" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Les numéros de mesures peuvent être encadrés ou entourés d'un cercle. diff --git a/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly b/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly index ebaee65462..01e087a3e4 100644 --- a/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly +++ b/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden imprimir reguladores con un círculo en la punta (notación «al niente») estableciendo la propiedad @code{circled-tip} del objeto @@ -15,7 +15,6 @@ Se pueden imprimir reguladores con un círculo en la punta (notación " doctitlees = "Impresión de reguladores utilizando la notación «al niente»" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Crescendo-Klammern können mit einem kleinen Kreis vor der Spitze @@ -25,7 +24,6 @@ Se pueden imprimir reguladores con un círculo en la punta (notación " doctitlede = "Crescendo Klammern al niente schreiben" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de diff --git a/Documentation/snippets/printing-marks-on-every-staff.ly b/Documentation/snippets/printing-marks-on-every-staff.ly index 1affa86338..ab9b546d71 100644 --- a/Documentation/snippets/printing-marks-on-every-staff.ly +++ b/Documentation/snippets/printing-marks-on-every-staff.ly @@ -6,7 +6,7 @@ \header { lsrtags = "text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Aunque normalmente las marcas de texto sólo se imprimen sobre el pentagrama superior, también se pueden imprimir en otro pentagrama @@ -15,7 +15,6 @@ cualquiera. " doctitlees = "Imprimir marcas en cualquier pentagrama" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Normalerweise werden Textzeichen nur über dem obersten Notensystem gesetzt. Sie @@ -23,7 +22,6 @@ können aber auch über jedem System ausgegeben werden. " doctitlede = "Zeichen über jedem System ausgeben" - %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 texidocfr = " Bien que ces indications textuelles ne soient habituellement imprimées 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 e935e2defe..8f617f7e7c 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 @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, expressive-marks, staff-notation, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " De forma predeterminada, las indicaciones metronómicas y las letras de ensayo se imprimen encima del pentagrama. Para @@ -19,7 +19,6 @@ adecuadamente la propiedad @code{direction} de doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Normalerweise werden Metronom- und Übungszeichen über dem Notensystem ausgegeben. @@ -28,7 +27,6 @@ von @code{MetronomeMark} oder @code{RehearsalMark} entsprechend verändert werde " doctitlede = "Metronom- und Übungszeichen unter das System setzen" - %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 texidocfr = " Les indications de tempo et les marques de repère s'impriment par défaut 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 5a1bb81dd8..236e082912 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 @@ -6,7 +6,7 @@ \header { lsrtags = "tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede usar el contexto @code{NoteNames} para imprimir el valor textual de las notas. La propiedad @code{printOctaveNames} activa o 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 316d2faee7..24363bb2c4 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 @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " De forma predeterminada se suprime el número del primer compás de una @@ -21,7 +21,6 @@ líinea divisoria vacía antes de la primera nota. doctitlees = "Imprimir el número de compás en el primer compás" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Standardmäßig wird die erste Taktzahl einer Paritur nicht gesetzt, @@ -35,7 +34,6 @@ werden, damit das funktioniert. doctitlede = "Setzen der Taktnummer für den ersten Takt" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est diff --git a/Documentation/snippets/quoting-another-voice-with-transposition.ly b/Documentation/snippets/quoting-another-voice-with-transposition.ly index 69c5bff5b9..5d8b4d3e25 100644 --- a/Documentation/snippets/quoting-another-voice-with-transposition.ly +++ b/Documentation/snippets/quoting-another-voice-with-transposition.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches, staff-notation" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los pasajes citados tienen en cuenta la transposición de la fuente tanto como la del destino. En este ejemplo, todos los @@ -19,7 +19,6 @@ se transportan todas las notas (incluidas las citadas). doctitlees = "Citar otra voz con transposición" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Zitate berücksichtigen sowohl die Transposition der Quelle als auch @@ -30,7 +29,6 @@ in diesem Fall werden alle Noten (auch die zitierten) transponiert. " doctitlede = "Eine Stimme mit Transposition zitieren" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Les citations tiennent compte de la transposition, aussi bien celle de diff --git a/Documentation/snippets/quoting-another-voice.ly b/Documentation/snippets/quoting-another-voice.ly index ceb23adff1..35cdd897ed 100644 --- a/Documentation/snippets/quoting-another-voice.ly +++ b/Documentation/snippets/quoting-another-voice.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La propiedad @code{quotedEventTypes} determina los tipos de eventos @@ -25,7 +25,6 @@ Para ver una lista de los tipos de evento, consulte la sección " doctitlees = "Citar otra voz" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die @code{quotedEventTypes}-Eigenschaft bestimmt die @@ -39,7 +38,6 @@ sich @code{rest-event} nicht in @code{quotedEventTypes} befindet. " doctitlede = "Eine andere Stimme zitieren" - %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 texidocfr = " Les types d'événement pris en charge pour la citation peuvent se régler diff --git a/Documentation/snippets/redefining-grace-note-global-defaults.ly b/Documentation/snippets/redefining-grace-note-global-defaults.ly index 2467cf4f73..50695199df 100644 --- a/Documentation/snippets/redefining-grace-note-global-defaults.ly +++ b/Documentation/snippets/redefining-grace-note-global-defaults.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los valores predeterminados para las notas de adorno están @@ -22,7 +22,6 @@ efectos. doctitlees = "Redefinición de los valores globales predeterminados para notas de adorno" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die globalen Standardeinstellungen für Verzierungsnoten werden in @@ -37,7 +36,6 @@ werden. doctitlede = "Globale Umdefinition von Verzierungsnoten" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Vous pouvez modifier les valeurs des variables @code{startGraceMusic}, diff --git a/Documentation/snippets/removing-bar-numbers-from-a-score.ly b/Documentation/snippets/removing-bar-numbers-from-a-score.ly index d4183c8c85..a4054ca40d 100644 --- a/Documentation/snippets/removing-bar-numbers-from-a-score.ly +++ b/Documentation/snippets/removing-bar-numbers-from-a-score.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, contexts-and-engravers" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden eliminar completamente los números de compás quitando el @@ -17,7 +17,6 @@ grabador @code{Bar_number_engraver} del contexto de @code{Score}. doctitlees = "Suprimir los números de compás de toda la partitura" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Taktnummern können vollkommen aus den Noten entfernt werden, indem @@ -28,7 +27,6 @@ entfernt. doctitlede = "Entfernung von Taktnummern in einer Partitur" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Désactiver le graveur concerné --- @code{Bar_number_engraver} --- 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 e3fc739e67..88be85b962 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 @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " De forma predeterminada, las líneas divisorias en los grupos StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas. diff --git a/Documentation/snippets/removing-the-first-empty-line.ly b/Documentation/snippets/removing-the-first-empty-line.ly index 81bdd74759..6549a497dd 100644 --- a/Documentation/snippets/removing-the-first-empty-line.ly +++ b/Documentation/snippets/removing-the-first-empty-line.ly @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, tweaks-and-overrides, breaks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " El primer pentagrama vacío también se puede suprimir de la partitura estableciendo la propiedad @code{remove-first} de @@ -23,7 +23,6 @@ escribe. " doctitlees = "Quitar la primera línea vacía" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ein leeres Notensystem kann auch aus der ersten Zeile einer Partitur @@ -39,7 +38,6 @@ gültig sind. " doctitlede = "Die erste leere Notenzeile auch entfernen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Par défaut, le premier système comportera absolument toutes les portées. diff --git a/Documentation/snippets/repeats-headword.ly b/Documentation/snippets/repeats-headword.ly index df775861f4..1e50a53aa1 100644 --- a/Documentation/snippets/repeats-headword.ly +++ b/Documentation/snippets/repeats-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) \paper { diff --git a/Documentation/snippets/repeats.snippet-list b/Documentation/snippets/repeats.snippet-list index 676a863561..c9b276e8ff 100644 --- a/Documentation/snippets/repeats.snippet-list +++ b/Documentation/snippets/repeats.snippet-list @@ -7,6 +7,7 @@ percent-repeat-count-visibility.ly percent-repeat-counter.ly positioning-segno-and-coda-with-line-break.ly printing-a-repeat-sign-at-the-beginning-of-a-piece.ly +setting-the-double-repeat-default-for-volte.ly shortening-volta-brackets.ly volta-below-chords.ly volta-multi-staff.ly diff --git a/Documentation/snippets/rest-styles.ly b/Documentation/snippets/rest-styles.ly index 5b418b0c21..ea536b0ac6 100644 --- a/Documentation/snippets/rest-styles.ly +++ b/Documentation/snippets/rest-styles.ly @@ -6,12 +6,11 @@ \header { lsrtags = "rhythms, ancient-notation, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Estilos de silencios" texidoces = " Los silencios se pueden imprimir en distintos estilos. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 doctitlede = "Pausenstile" @@ -20,7 +19,6 @@ Pausen können in verschiedenen Stilen dargestellt werden. " - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " Les silences peuvent être gravés selon différents styles. diff --git a/Documentation/snippets/reverting-default-beam-endings.ly b/Documentation/snippets/reverting-default-beam-endings.ly index 893bc31a32..c0d974719f 100644 --- a/Documentation/snippets/reverting-default-beam-endings.ly +++ b/Documentation/snippets/reverting-default-beam-endings.ly @@ -1,11 +1,11 @@ % Do not edit this file; it is automatically % generated from Documentation/snippets/new % This file is in the public domain. -%% Note: this file works from version 2.13.4 -\version "2.13.20" +%% Note: this file works from version 2.13.29 +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} en 12/8, en primer lugar tenemos que sobreescribir los finales de @@ -39,9 +39,8 @@ défaut relatifs à 12/8, puis ajouter nos propres règles : lsrtags = "rhythms" texidoc = " -To typeset beams grouped @code{3-4-3-2} in 12/8 it is no longer -necessary first to override the default beam endings in 12/8,and -then to set up the new beaming endings: +To typeset beams grouped @code{3-4-3-2} one need only change the +beat structure: " doctitle = "Reverting default beam endings" } % begin verbatim @@ -54,7 +53,6 @@ then to set up the new beaming endings: a8 a a a a a a a a a a a % Set new values for beam endings - \overrideBeamSettings #'Score #'(12 . 8) #'end - #'((* . (3 4 3 2))) + \set Score.beatStructure = #'(3 4 3 2) a8 a a a a a a a a a a a } diff --git a/Documentation/snippets/rhythms-headword.ly b/Documentation/snippets/rhythms-headword.ly index 8143a0a7c8..b703d9d0c4 100644 --- a/Documentation/snippets/rhythms-headword.ly +++ b/Documentation/snippets/rhythms-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) \paper { diff --git a/Documentation/snippets/rhythms.snippet-list b/Documentation/snippets/rhythms.snippet-list index 3f6126f8b6..d0c909cda6 100644 --- a/Documentation/snippets/rhythms.snippet-list +++ b/Documentation/snippets/rhythms.snippet-list @@ -9,6 +9,7 @@ beam-grouping-in-7-8-time.ly beams-across-line-breaks.ly changing-beam-knee-gap.ly changing-form-of-multi-measure-rests.ly +changing-the-number-of-augmentation-dots-per-note.ly changing-the-time-signature-without-affecting-the-beaming.ly changing-the-tuplet-number.ly changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly @@ -16,7 +17,6 @@ chant-or-psalms-notation.ly compound-time-signatures.ly conducting-signs,-measure-grouping-signs.ly controlling-tuplet-bracket-visibility.ly -dot-count-override.ly engraving-ties-manually.ly engraving-tremolos-with-floating-beams.ly entering-several-tuplets-using-only-one--times-command.ly @@ -51,7 +51,7 @@ rhythmic-slashes.ly skips-in-lyric-mode-2.ly skips-in-lyric-mode.ly stemlets.ly -sub-dividing-beams.ly +subdividing-beams.ly three-sided-box.ly time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly tweaking-grace-layout-within-music.ly diff --git a/Documentation/snippets/scheme-engraver-ambitus.ly b/Documentation/snippets/scheme-engraver-ambitus.ly deleted file mode 100644 index 7dc8a6d445..0000000000 --- a/Documentation/snippets/scheme-engraver-ambitus.ly +++ /dev/null @@ -1,341 +0,0 @@ -% Do not edit this file; it is automatically -% generated from Documentation/snippets/new -% This file is in the public domain. -%% Note: this file works from version 2.13.15 -\version "2.13.20" - -\header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 - - texidoces = " -Este ejemplo demuestra cómo se puede definir el grabador de ámbito en -el espacio del usuario, con un grabador de Scheme. - -Esto es básicamente una reescritura en Scheme del código de -@file{lily/ambitus-engraver.cc}. - -" - - doctitlees = "Definir un grabador en Scheme: grabador de ámbito" - - - lsrtags = "contexts-and-engravers" - - - texidoc = "This example demonstrates how the ambitus engraver may be - defined on the user side, with a Scheme engraver. - - This is basically a rewrite in Scheme of the code from - @file{lily/ambitus-engraver.cc}. -" - - doctitle = "Defining an engraver in Scheme: ambitus engraver" -} % begin verbatim - - -#(use-modules (oop goops)) - -%%% -%%% Grob utilities -%%% -%%% These are literal rewrites of some C++ methods used by the ambitus engraver. -#(define (ly:event::in-event-class event class-name) - "Check if @var{event} the given class. -Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}." - (memq class-name (ly:make-event-class (ly:event-property event 'class)))) - -#(define (ly:separation-item::add-conditional-item grob grob-item) - "Add @var{grob-item} to the array of conditional elements of @var{grob}. -Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}." - (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item)) - -#(define (ly:accidental-placement::accidental-pitch accidental-grob) - "Get the pitch from the grob cause of @var{accidental-grob}. -Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}." - (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause) - 'pitch)) - -#(define (ly:accidental-placement::add-accidental grob accidental-grob) - "Add @var{accidental-grob}, an @code{Accidental} grob, to the -list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement} -grob. -Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}." - (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob))) - (set! (ly:grob-parent accidental-grob X) grob) - (set! (ly:grob-property accidental-grob 'X-offset) - ly:grob::x-parent-positioning) - (let* ((accidentals (ly:grob-object grob 'accidental-grobs)) - (handle (assq (ly:pitch-notename pitch) accidentals)) - (entry (if handle (cdr handle) '()))) - (set! (ly:grob-object grob 'accidental-grobs) - (assq-set! accidentals - (ly:pitch-notename pitch) - (cons accidental-grob entry)))))) - -%%% -%%% Ambitus data structure -%%% - -%%% The class holds the various grobs that are created -%%% to print an ambitus: -%%% - ambitus-group: the grob that groups all the components of an ambitus -%%% (Ambitus grob); -%%% - ambitus-line: the vertical line between the upper and lower ambitus -%%% notes (AmbitusLine grob); -%%% - ambitus-up-note and ambitus-down-note: the note head and accidental -%%% for the lower and upper note of the ambitus (see class -%%% below). -%%% The other slots define the key and clef context of the engraver: -%%% - start-c0: position of middle c at the beginning of the piece. It -%%% is used to place the ambitus notes according to their pitch; -%%% - start-key-sig: the key signature at the beginning of the piece. It -%%% is used to determine if accidentals shall be printed next to ambitus -%%% notes. - -#(define-class () - (ambitus-group #:accessor ambitus-group) - (ambitus-line #:accessor ambitus-line) - (ambitus-up-note #:getter ambitus-up-note - #:init-form (make )) - (ambitus-down-note #:getter ambitus-down-note - #:init-form (make )) - (start-c0 #:accessor ambitus-start-c0 - #:init-value #f) - (start-key-sig #:accessor ambitus-start-key-sig - #:init-value '())) - -%%% Accessor for the lower and upper note data of an ambitus -#(define-method (ambitus-note (ambitus ) direction) - "If @var{direction} is @code{UP}, then return the upper ambitus note -of @var{ambitus}, otherwise return the lower ambitus note." - (if (= direction UP) - (ambitus-up-note ambitus) - (ambitus-down-note ambitus))) - -%%% The class holds the grobs that are specific to ambitus -%%% (lower and upper) notes: -%%% - head: an AmbitusNoteHead grob; -%%% - accidental: an AmbitusAccidental grob, to be possibly printed next -%%% to the ambitus note head. -%%% Moreover: -%%% - pitch is the absolute pitch of the note -%%% - cause is the note event that causes this ambitus note, i.e. the lower -%%% or upper note of the considered music sequence. - -#(define-class () - (head #:accessor ambitus-note-head - #:init-value #f) - (accidental #:accessor ambitus-note-accidental - #:init-value #f) - (cause #:accessor ambitus-note-cause - #:init-value #f) - (pitch #:accessor ambitus-note-pitch - #:init-value #f)) - -%%% -%%% Ambitus engraving logics -%%% -%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}. - -#(define (make-ambitus translator) - "Build an ambitus object: initialize all the grobs and their relations. - -The Ambitus grob contain all other grobs: - Ambitus - |- AmbitusLine - |- AmbitusNoteHead for upper note - |- AmbitusAccidental for upper note - |- AmbitusNoteHead for lower note - |- AmbitusAccidental for lower note - -The parent of an accidental is the corresponding note head, -and the accidental is set as the 'accidental-grob of the note head -so that is printed by the function that prints notes." - ;; make the ambitus object - (let ((ambitus (make ))) - ;; build the Ambitus grob, which will contain all other grobs - (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '())) - ;; build the AmbitusLine grob (line between lower and upper note) - (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '())) - ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental - (for-each (lambda (direction) - (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '())) - (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '())) - (group (ambitus-group ambitus))) - ;; The parent of the AmbitusAccidental grob is the - ;; AmbitusNoteHead grob - (set! (ly:grob-parent accidental Y) head) - ;; The AmbitusAccidental grob is set as the accidental-grob - ;; object of the AmbitusNoteHead. This is later used by the - ;; function that prints notes. - (set! (ly:grob-object head 'accidental-grob) accidental) - ;; both the note head and the accidental grobs are added - ;; to the main ambitus grob. - (ly:axis-group-interface::add-element group head) - (ly:axis-group-interface::add-element group accidental) - ;; the note head and the accidental grobs are added to the - ;; ambitus object - (set! (ambitus-note-head (ambitus-note ambitus direction)) - head) - (set! (ambitus-note-accidental (ambitus-note ambitus direction)) - accidental))) - (list DOWN UP)) - ;; The parent of the ambitus line is the lower ambitus note head - (set! (ly:grob-parent (ambitus-line ambitus) X) - (ambitus-note-head (ambitus-note ambitus DOWN))) - ;; the ambitus line is added to the ambitus main grob - (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus)) - ambitus)) - -#(define-method (initialize-ambitus-state (ambitus ) translator) - "Initialize the state of @var{ambitus}, by getting the starting -position of middle C and key signature from @var{translator}'s context." - (if (not (ambitus-start-c0 ambitus)) - (begin - (set! (ambitus-start-c0 ambitus) - (ly:context-property (ly:translator-context translator) - 'middleCPosition - 0)) - (set! (ambitus-start-key-sig ambitus) - (ly:context-property (ly:translator-context translator) - 'keySignature))))) - -#(define-method (update-ambitus-notes (ambitus ) note-grob) - "Update the upper and lower ambitus pithes of @var{ambitus}, using -@var{note-grob}." - ;; Get the event that caused the note-grob creation - ;; and check that it is a note-event. - (let ((note-event (ly:grob-property note-grob 'cause))) - (if (ly:event::in-event-class note-event 'note-event) - ;; get the pitch from the note event - (let ((pitch (ly:event-property note-event 'pitch))) - ;; if this pitch is lower than the current ambitus lower - ;; note pitch (or it has not been initialized yet), - ;; then this pitch is the new ambitus lower pitch, - ;; and conversely for upper pitch. - (for-each (lambda (direction pitch-compare) - (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction))) - (pitch-compare pitch - (ambitus-note-pitch (ambitus-note ambitus direction)))) - (begin - (set! (ambitus-note-pitch (ambitus-note ambitus direction)) - pitch) - (set! (ambitus-note-cause (ambitus-note ambitus direction)) - note-event)))) - (list DOWN UP) - (list ly:pitch) translator) - "Typeset the ambitus: -- place the lower and upper ambitus notes according to their pitch and - the position of the middle C; -- typeset or delete the note accidentals, according to the key signature. - An accidental, if it is to be printed, is added to an AccidentalPlacement - grob (a grob dedicated to the placement of accidentals near a chord); -- both note heads are added to the ambitus line grob, so that a line should - be printed between them." - ;; check if there are lower and upper pitches - (if (and (ambitus-note-pitch (ambitus-note ambitus UP)) - (ambitus-note-pitch (ambitus-note ambitus DOWN))) - ;; make an AccidentalPlacement grob, for placement of note accidentals - (let ((accidental-placement (ly:engraver-make-grob - translator - 'AccidentalPlacement - (ambitus-note-accidental (ambitus-note ambitus DOWN))))) - ;; For lower and upper ambitus notes: - (for-each (lambda (direction) - (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction)))) - ;; set the cause and the staff position of the ambitus note - ;; according to the associated pitch - (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) - 'cause) - (ambitus-note-cause (ambitus-note ambitus direction))) - (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction)) - 'staff-position) - (+ (ambitus-start-c0 ambitus) - (ly:pitch-steps pitch))) - ;; determine if an accidental shall be printed for this note, - ;; according to the key signature - (let* ((handle (or (assoc (cons (ly:pitch-octave pitch) - (ly:pitch-notename pitch)) - (ambitus-start-key-sig ambitus)) - (assoc (ly:pitch-notename pitch) - (ambitus-start-key-sig ambitus)))) - (sig-alter (if handle (cdr handle) 0))) - (cond ((= (ly:pitch-alteration pitch) sig-alter) - ;; the note alteration is in the key signature - ;; => it does not have to be printed - (ly:grob-suicide! - (ambitus-note-accidental (ambitus-note ambitus direction))) - (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction)) - 'accidental-grob) - '())) - (else - ;; otherwise, the accidental shall be printed - (set! (ly:grob-property (ambitus-note-accidental - (ambitus-note ambitus direction)) - 'alteration) - (ly:pitch-alteration pitch))))) - ;; add the AccidentalPlacement grob to the - ;; conditional items of the AmbitusNoteHead - (ly:separation-item::add-conditional-item - (ambitus-note-head (ambitus-note ambitus direction)) - accidental-placement) - ;; add the AmbitusAccidental to the list of the - ;; AccidentalPlacement grob accidentals - (ly:accidental-placement::add-accidental - accidental-placement - (ambitus-note-accidental (ambitus-note ambitus direction))) - ;; add the AmbitusNoteHead grob to the AmbitusLine grob - (ly:pointer-group-interface::add-grob - (ambitus-line ambitus) - 'note-heads - (ambitus-note-head (ambitus-note ambitus direction))))) - (list DOWN UP)) - ;; add the AccidentalPlacement grob to the main Ambitus grob - (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement)) - ;; no notes ==> suicide the grobs - (begin - (for-each (lambda (direction) - (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction))) - (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction)))) - (list DOWN UP)) - (ly:grob-suicide! ambitus-line)))) - -%%% -%%% Ambitus engraver definition -%%% -#(define ambitus-engraver - (lambda (context) - (let ((ambitus #f)) - ;; when music is processed: make the ambitus object, if not already built - `((process-music . ,(lambda (translator) - (if (not ambitus) - (set! ambitus (make-ambitus translator))))) - ;; set the ambitus clef and key signature state - (stop-translation-timestep . ,(lambda (translator) - (if ambitus - (initialize-ambitus-state ambitus translator)))) - ;; when a note-head grob is built, update the ambitus notes - (acknowledgers - (note-head-interface . ,(lambda (engraver grob source-engraver) - (if ambitus - (update-ambitus-notes ambitus grob))))) - ;; finally, typeset the ambitus according to its upper and lower notes - ;; (if any). - (finalize . ,(lambda (translator) - (if ambitus - (typeset-ambitus ambitus translator)))))))) - -%%% -%%% Example -%%% - -\score { - \new StaffGroup << - \new Staff { c'4 des' e' fis' gis' } - \new Staff { \clef "bass" c4 des ~ des ees b, } - >> - \layout { \context { \Staff \consists #ambitus-engraver } } -} diff --git a/Documentation/snippets/screech-boink.ly b/Documentation/snippets/screech-boink.ly index abd924112d..33fb3e1fea 100644 --- a/Documentation/snippets/screech-boink.ly +++ b/Documentation/snippets/screech-boink.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \header { lsrtags = "headwords" texidoc = "Random complex notation" diff --git a/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly b/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly index 0ffa430415..257f26221b 100644 --- a/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly +++ b/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Si la nota que da fin a un regulador cae sobre la primera parte de un compás, el regulador se detiene en la línea divisoria @@ -16,7 +16,6 @@ sobreescribiendo la propiedad @code{'to-barline}. " doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn die Note, an welcher eine Crescendo-Klammer endet, die erste Note @@ -25,7 +24,6 @@ beendet. Dieses Verhalten kann auch mit der Eigenschaft @code{'to-barline} geändert werden: " doctitlede = "Das Verhalten von Crescendo-Klammern an Taktlinien beeinflussen" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " En principe, un soufflet -- (de)crescendo imprimé sous forme graphique -- diff --git a/Documentation/snippets/setting-system-separators.ly b/Documentation/snippets/setting-system-separators.ly index 8dd76f2392..fa631e4551 100644 --- a/Documentation/snippets/setting-system-separators.ly +++ b/Documentation/snippets/setting-system-separators.ly @@ -6,7 +6,7 @@ \header { lsrtags = "tweaks-and-overrides, paper-and-layout" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden insertar separadores sistema entre los sistemas de una página. Se puede usar cualquier elemento de marcado, pero diff --git a/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly b/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly new file mode 100644 index 0000000000..e36d5f9887 --- /dev/null +++ b/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly @@ -0,0 +1,24 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.26 +\version "2.13.29" +\header { + lsrtags = "repeats" + texidoc = "There are three different styles of double repeats for +volte, that can be set using @code{doubleRepeatType}." + + doctitle = "Setting the double repeat default for volte" +} % begin verbatim + + + +\relative c'' { + \repeat volta 1 { c1 } + \set Score.doubleRepeatType = #":|:" + \repeat volta 1 { c1 } + \set Score.doubleRepeatType = #":|.|:" + \repeat volta 1 { c1 } + \set Score.doubleRepeatType = #":|.:" + \repeat volta 1 { c1 } +} diff --git a/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly b/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly index b0749a8056..bc5b21d9e7 100644 --- a/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly +++ b/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Si los reguladores son demasiado cortos, se pueden alargar modificando la propiedad @code{minimum-length} del objeto @@ -15,7 +15,6 @@ modificando la propiedad @code{minimum-length} del objeto " doctitlees = "Ajustar la longitud mínima de los reguladores" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem @@ -24,7 +23,6 @@ verändert wird. " doctitlede = "Die Mindestlänge von Crescendo-Klammern bestimmen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Si un soufflet est trop court, il suffit d'ajuster la propriété diff --git a/Documentation/snippets/shortening-volta-brackets.ly b/Documentation/snippets/shortening-volta-brackets.ly index 770907d2c5..0d0381083c 100644 --- a/Documentation/snippets/shortening-volta-brackets.ly +++ b/Documentation/snippets/shortening-volta-brackets.ly @@ -6,7 +6,7 @@ \header { lsrtags = "repeats" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " De forma predeterminada, los corchetes de primera y segunda vez se trazan encima de los finales alternativos completos, pero es posible @@ -17,7 +17,6 @@ sólo dura un compás, que corresponde a una duración de 3/4. " doctitlees = "Shortening volta brackets" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber @@ -27,7 +26,6 @@ es ist möglich sie zu verkürzen. Hierzu muss " doctitlede = "Volta-Klammern verkürzen" - %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 texidocfr = " Les crochets indiquant les fins alternatives s'étalent tout au long ce diff --git a/Documentation/snippets/showing-chords-at-changes.ly b/Documentation/snippets/showing-chords-at-changes.ly index efd8090293..1b0bbded8b 100644 --- a/Documentation/snippets/showing-chords-at-changes.ly +++ b/Documentation/snippets/showing-chords-at-changes.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden imprimir los acordes exclusivamente al comienzo de las líneas y cuando cambia el acorde. @@ -14,7 +14,6 @@ líneas y cuando cambia el acorde. " doctitlees = "Imprimir los acordes cuando se produce un cambio" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Akkordsymbole können so eingestellt werden, dass sie nur zu Beginn der Zeile 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 92968bb9d6..370cd3b3c1 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,30 +1,25 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. -\version "2.13.20" +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.27 +\version "2.13.29" \header { lsrtags = "expressive-marks, tweaks-and-overrides" texidoc = " -By default, LilyPond does not allow the same articulation (e.g. an +By default, LilyPond does not allow the same articulation (e.g., an accent, a fermata, a flageolet, etc.) to be displayed above and below a -note. For example, c4_\\fermata^\\fermata will only show a fermata -below. The fermata above will simply be ignored. However, one can stick +note. For example, @code{c4_\\fermata^\\fermata} will only show a fermata +below, ignoring the fermata above. However, one can stick scripts (just like fingerings) inside a chord, which means it is -possible to have as many articulations as desired. This approach has -the advantage that it ignores the stem and positions the articulation -relative to the note head. This can be seen in the case of the -flageolets in the snippet. To mimic the behaviour of scripts outside a -chord, 'add-stem-support would be required. So, the solution is to -write the note as a chord and add the articulations inside the <...>. -The direction will always be above, but one can tweak this via a -\\tweak: @code{} - +possible to have as many articulations as desired. So, the solution is to +write the note as a chord and add the articulations inside the @code{<@dots{}>}. " doctitle = "Showing the same articulation above and below a note or chord" } % begin verbatim + % The same as \flageolet, just a little smaller smallFlageolet = #(let ((m (make-articulation "flageolet"))) @@ -34,17 +29,13 @@ smallFlageolet = m) \relative c' { - s4^"wrong:" - c_\fermata^\fermata % The second fermata is ignored! - ^\smallFlageolet_\smallFlageolet + s4^"Wrong:" + c4_\fermata^\fermata % The second fermata is ignored! + 4^\smallFlageolet_\smallFlageolet - % it works only if you wrap the note inside a chord. By default, - % all articulations will be printed above, so you have to tweak - % the direction. s4^"Works if written inside a chord:" - - - - + 4 + 4 + 4 + 4 } - diff --git a/Documentation/snippets/simple-lead-sheet.ly b/Documentation/snippets/simple-lead-sheet.ly index 46fa36cbdf..0b91faed66 100644 --- a/Documentation/snippets/simple-lead-sheet.ly +++ b/Documentation/snippets/simple-lead-sheet.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Al juntar nombres de acorde en cifrado americano, melodía y letra, obtenemos una hoja guía de acordes o «lead sheet»: @@ -14,14 +14,12 @@ obtenemos una hoja guía de acordes o «lead sheet»: " doctitlees = "Hoja guía de acordes o «lead sheet» sencilla" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Ein Liedblatt besteht aus Akkordbezeichnungen, einer Melodie und dem Liedtext: " doctitlede = "Ein einfaches Liedblatt" - %% Translation of GIT committish: 9594a4569164407a146bbc4aad8be3a60a4725cf texidocfr = " Assembler des noms d'accords, une mélodie et des paroles permet diff --git a/Documentation/snippets/simultaneous-headword.ly b/Documentation/snippets/simultaneous-headword.ly index d949d381b0..cf5460e6dc 100644 --- a/Documentation/snippets/simultaneous-headword.ly +++ b/Documentation/snippets/simultaneous-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) \paper { 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 64f86d4af3..3c4676b2a4 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 @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music, chords, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta plantilla facilita la preparación de una canción con melodía, letra y acordes. @@ -14,12 +14,10 @@ letra y acordes. " doctitlees = "Plantilla de pentagrama único con música letra y acordes" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。 " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Mit diesem Beispiel können Sie einen Song mit Melodie, @@ -28,7 +26,6 @@ Text und Akkorden schreiben. doctitlede = "Vorlage für eine Notenzeile mit Noten Text und Akkorden" - %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 texidocfr = " Ce cannevas comporte tous les éléments d'une chanson : la mélodie, 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 d7145f9093..64ea30ba02 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 @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music, chords, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Presentamos a continuación un ejemplo de plantilla para una hoja guía de acordes con melodía, letra, acordes y diagramas de 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 27eb97c1b1..476d07bd3d 100644 --- a/Documentation/snippets/single-staff-template-with-notes-and-chords.ly +++ b/Documentation/snippets/single-staff-template-with-notes-and-chords.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con melodía y acordes? ¡No busque más! @@ -15,12 +15,10 @@ melodía y acordes? ¡No busque más! doctitlees = "Plantilla de pentagrama único con música y acordes" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " 旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません! " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben? Hier ist @@ -29,7 +27,6 @@ das richtige Beispiel für Sie! doctitlede = "Vorlage für eine Notenzeile mit Akkorden" - %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 texidocfr = " Vous avez besoin de la partition d'une mélodie avec les accords ? 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 1bff5fe33b..55517b3b0c 100644 --- a/Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly +++ b/Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta pequeña plantilla muestra una melodía sencilla con letra. Córtela y péguela, escriba las notas y luego la letra. Este ejemplo desactiva @@ -17,7 +17,6 @@ comentario la línea correspondiente. " doctitlees = "Plantilla de pentagrama único don notas y letra" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符@c @@ -26,7 +25,6 @@ comentario la línea correspondiente. 行を変更するか、コメント アウトしてください。 " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren @@ -40,7 +38,6 @@ entsprechende Zeile entweder ändern oder auskommentieren. doctitlede = "Vorlage für ein Notensystem mit Noten und Gesangstext" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " diff --git a/Documentation/snippets/single-staff-template-with-only-notes.ly b/Documentation/snippets/single-staff-template-with-only-notes.ly index 96b9d504f5..45c97ea66e 100644 --- a/Documentation/snippets/single-staff-template-with-only-notes.ly +++ b/Documentation/snippets/single-staff-template-with-only-notes.ly @@ -6,7 +6,7 @@ \header { lsrtags = "template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta plantilla simple prepara un pentagrama con notas, adecuado para un instrumento solista o un fragmento melódico. Córtelo y péguelo en @@ -15,14 +15,12 @@ un archivo, escriba las notas y ¡ya está! " doctitlees = "Plantilla de un solo pentagrama con notas únicamente" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。@c これをファイルにカット&ペーストして、音符を付け加えれば完了です! " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein @@ -33,7 +31,6 @@ eine vollständige Notationsdatei. doctitlede = "Vorlage für ein Notensystem" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Cet exemple simpliste se compose d'une portée agrémentée de quelques diff --git a/Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly b/Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly index 77d389dd25..b7adc7ae2c 100644 --- a/Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly +++ b/Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Marca de pizzicato de chasquido (`pizzicato de Bartók')" texidoces = " El pizzicato de chasquido (también llamado @q{Pizzicato de Bartók}) es un diff --git a/Documentation/snippets/staff-headword.ly b/Documentation/snippets/staff-headword.ly index 5bd81fb866..230c7532ce 100644 --- a/Documentation/snippets/staff-headword.ly +++ b/Documentation/snippets/staff-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "catalan.ly" #(set-global-staff-size 15) \paper{ diff --git a/Documentation/snippets/stand-alone-two-column-markup.ly b/Documentation/snippets/stand-alone-two-column-markup.ly index 9e9c2c3168..0ceec8199e 100644 --- a/Documentation/snippets/stand-alone-two-column-markup.ly +++ b/Documentation/snippets/stand-alone-two-column-markup.ly @@ -6,7 +6,7 @@ \header { lsrtags = "text" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Los textos independientes se pueden disponer en varias columnas utilizando instrucciones @code{\\markup}: @@ -14,7 +14,6 @@ utilizando instrucciones @code{\\markup}: " doctitlees = "Elemento de marcado de texto independiente en dos columnas" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Isolierter Text kann in mehreren Spalten mit @code{\\markup}-Befehlen @@ -22,7 +21,6 @@ angeordnet werden: " doctitlede = "Isolierter Text in zwei Spalten" - %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 texidocfr = " L'utilisation de la commande @code{\\markup} permet de distribuer un bloc diff --git a/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly b/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly index e18c687096..6bbd767ad3 100644 --- a/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly +++ b/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.4 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La dirección de las plicas se contola de la misma forma en la tablatura que en la notación tradicional. Las barras se pueden diff --git a/Documentation/snippets/string-quartet-template-simple.ly b/Documentation/snippets/string-quartet-template-simple.ly index b562a62b14..fce55cc68d 100644 --- a/Documentation/snippets/string-quartet-template-simple.ly +++ b/Documentation/snippets/string-quartet-template-simple.ly @@ -6,7 +6,7 @@ \header { lsrtags = "unfretted-strings, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta plantilla muestra un cuarteto de cuerda normal. También utiliza una sección @code{\\global} para el compás y la armadura @@ -14,13 +14,11 @@ una sección @code{\\global} para el compás y la armadura " doctitlees = "Plantilla de cuarteto de cuerda (sencilla)" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために @code{@bs{}global} セクションを使っています。 " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier @@ -30,7 +28,6 @@ Vorzeichen benutzt. doctitlede = "Vorlage für Streichquartett (einfach)" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Voici un canevas pour quatuor à cordes. Notez l'utilisation de la diff --git a/Documentation/snippets/string-quartet-template-with-separate-parts.ly b/Documentation/snippets/string-quartet-template-with-separate-parts.ly index 9394a7cacf..16c941bc75 100644 --- a/Documentation/snippets/string-quartet-template-with-separate-parts.ly +++ b/Documentation/snippets/string-quartet-template-with-separate-parts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "unfretted-strings, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un resultado satisfactorio para el cuarteto, pero ¿y si tenemos que @@ -27,7 +27,6 @@ los archivos independientes! " doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " \"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c @@ -42,7 +41,6 @@ los archivos independientes! 別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください! " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Mit diesem Beispiel können Sie ein schönes Streichquartett notieren, @@ -62,7 +60,6 @@ zugewiesen, auf den zurückgegriffen werden kann. doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Grâce à ce canevas, vous pouvez obtenir une partition d'excellente diff --git a/Documentation/snippets/sub-dividing-beams.ly b/Documentation/snippets/sub-dividing-beams.ly deleted file mode 100644 index 091e32a2aa..0000000000 --- a/Documentation/snippets/sub-dividing-beams.ly +++ /dev/null @@ -1,94 +0,0 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. -\version "2.13.20" - -\header { - lsrtags = "rhythms" - -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 - texidoces = " -Las barras de semicorcheas (o notas más breves) seguidas no se -subdividen de forma predeterminada. Esto es: las tres (o más) -barras se prolongan, sin dividirse, sobre grupos completos de -notas. Este comportamiento se puede modificar para que las barras -se subdividan en subgrupos mediante el establecimiento de la -propiedad @code{subdivideBeams}. Cuando está establecida, las -diversas barras se subdividen a intervalos definidos por el valor -actual de la longitud del pulso @code{beatLength} reduciendo las -barras múltiples a una sola entre los subgrupos. Observe que el -valor predeterminado de @code{beatLength} es de una unidad sobre -el denominador del compás en curso, si no está establecido -explícitamente. Se debe establecer al valor de una fracción que -da la duración el subgrupo de barras utilizando la función -@code{ly:make-moment}, como se muestra aquí: - -" - doctitlees = "Subdivisión de las barras de semicorchea" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Balken von aufeinanderfolgenden Sechszehnteln (oder kürzeren Notenwerten) -werden standardmäßig nicht unterteilt. Dieses Verhalten kann verändert -werden, sodass die Balken in Untergruppen aufgeteilt werden, indem man -die Eigenschaft @code{subdivideBeams} verändert. Man muss die Unterteilungsintervalle -als Notenbruch mit der @code{make-moment}-Funktion für @code{beatLength} angeben, -damit die Balken unterbrochen wird und nur ein Balken durchgezogen bleibt. Der -Standardwert für @code{beatLength} ist 1 / Zähler des aktuellen Taktes. - -" - doctitlede = "Balken in Untergruppen teilen" - - - -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 - texidocfr = " -Les ligatures d'une succession de notes de durée inférieure à la croche -ne sont pas subdivisées par défaut. Autrement dit, tous les traits de -ligature seront continus. Ce comportement peut être modifié afin de -diviser la ligature en sous-groupes grâce à la propriété -@code{subdivideBeams}. Lorsqu'elle est activée, les ligatures seront -subdivisées selon un intervalle défini par @code{beatLength} ; il n'y -aura alors plus qu'un seul trait de ligature entre chaque sous-groupe. -Par défaut, @code{beatLength} fixe la valeur de référence à une noire. -Il faudra donc lui fournir, à l'aide de la fonction @code{make-moment}, -une fraction correspondant au sous-groupe désiré, comme dans l'exemple -suivant. - -" - doctitlefr = "Subdivision des ligatures" - - texidoc = " -The beams of consecutive 16th (or shorter) notes are, by default, not -sub-divided. That is, the three (or more) beams stretch unbroken over -entire groups of notes. This behavior can be modified to sub-divide -the beams into sub-groups by setting the property -@code{subdivideBeams}. When set, multiple beams will be sub-divided at -intervals defined by the current value of @code{beatLength} by reducing -the multiple beams to just one beam between the sub-groups. Note that -@code{beatLength} defaults to one over the denominator of the current -time signature if not set explicitly. It must be set to a fraction -giving the duration of the beam sub-group using the -@code{ly:make-moment} function, as shown here: - - - -" - doctitle = "Sub-dividing beams" -} % begin verbatim - -\relative c'' { - c32[ c c c c c c c] - \set subdivideBeams = ##t - c32[ c c c c c c c] - - % Set beam sub-group length to an eighth note - \set beatLength = #(ly:make-moment 1 8) - c32[ c c c c c c c] - - % Set beam sub-group length to a sixteenth note - \set beatLength = #(ly:make-moment 1 16) - c32[ c c c c c c c] -} - diff --git a/Documentation/snippets/subdividing-beams.ly b/Documentation/snippets/subdividing-beams.ly new file mode 100644 index 0000000000..39b4f69e83 --- /dev/null +++ b/Documentation/snippets/subdividing-beams.ly @@ -0,0 +1,45 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.29 +\version "2.13.29" + +\header { + lsrtags = "rhythms" + + texidoc = " +The beams of consecutive 16th (or shorter) notes are, by default, not +subdivided. That is, the three (or more) beams stretch unbroken over +entire groups of notes. This behavior can be modified to subdivide +the beams into sub-groups by setting the property +@code{subdivideBeams}. When set, multiple beams will be subdivided at +intervals defined by the current value of @code{baseMoment} by reducing +the multiple beams to just one beam between the sub-groups. Note that +@code{baseMoment} defaults to one over the denominator of the current +time signature if not set explicitly. It must be set to a fraction +giving the duration of the beam sub-group using the +@code{ly:make-moment} function, as shown in this snippet. Also, when +@code{baseMoment} is changed, @code{beatStructure} should also be changed +to match the new @code{baseMoment}: + +" + doctitle = "Subdividing beams" +} % begin verbatim + + +\relative c'' { + c32[ c c c c c c c] + \set subdivideBeams = ##t + c32[ c c c c c c c] + + % Set beam sub-group length to an eighth note + \set baseMoment = #(ly:make-moment 1 8) + \set beatStructure = #'(2 2 2 2) + c32[ c c c c c c c] + + % Set beam sub-group length to a sixteenth note + \set baseMoment = #(ly:make-moment 1 16) + \set beatStructure = #'(4 4 4 4) + c32[ c c c c c c c] +} + diff --git a/Documentation/snippets/text-headword.ly b/Documentation/snippets/text-headword.ly index b2d4eeeadc..45e4c64b7b 100644 --- a/Documentation/snippets/text-headword.ly +++ b/Documentation/snippets/text-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" \include "english.ly" #(set-global-staff-size 15) \paper { diff --git a/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly b/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly index 01a1caea4d..6377e4fa34 100644 --- a/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly +++ b/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly @@ -6,7 +6,7 @@ \header { lsrtags = "ancient-notation, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " A modo de alternativa para obtener auténticos «incipit» independientes de la partitura principal, se incluyen como 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 19f41cd824..651c96ccaf 100644 --- a/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly +++ b/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Transportar música con el menor número de alteraciones" texidoces = " Este ejemplo utiliza código de Scheme para forzar las @@ -37,7 +37,6 @@ naturales. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 doctitlede = "Noten mit minimaler Anzahl an Versetzungszeichen transponieren." texidocde = "Dieses Beispiel benutzt Scheme-Code, um enharmonische @@ -67,7 +66,6 @@ Auf diese Art werden am meisten natürliche Tonhöhen als enharmonische Variante gewählt. " - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Cet exemple, grâce à un peu de code Scheme, donne la priorité aux diff --git a/Documentation/snippets/tweaking-clef-properties.ly b/Documentation/snippets/tweaking-clef-properties.ly index 8784a1919e..4399f37070 100644 --- a/Documentation/snippets/tweaking-clef-properties.ly +++ b/Documentation/snippets/tweaking-clef-properties.ly @@ -6,7 +6,7 @@ \header { lsrtags = "pitches, staff-notation, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Trucaje de las propiedades de clave" texidoces = " La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de @@ -41,7 +41,6 @@ cambios manuales preservan el posicionamiento relativo estándar de las claves y las notas, pero no lo hacen en la segunda línea. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 doctitlede = "Eigenschaften des Schlüssels optimieren" texidocde = " @@ -74,7 +73,6 @@ Eigenschaften manuell setzt. Auf der ersten Zeile erhalten die manuellen Änderungen die ursprüngliche relative Positionierung von Schlüssel und Noten, auf der zweiten Zeile nicht. " - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph}, diff --git a/Documentation/snippets/tweaking-grace-layout-within-music.ly b/Documentation/snippets/tweaking-grace-layout-within-music.ly index 31551907bb..19f5e04e70 100644 --- a/Documentation/snippets/tweaking-grace-layout-within-music.ly +++ b/Documentation/snippets/tweaking-grace-layout-within-music.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " La disposición de las expresiones de adorno se puede cambiar a lo @@ -22,7 +22,6 @@ cabezas a aspas. doctitlees = "Trucar la disposición de las notas de adorno dentro de la música" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Das Layout von Verzierungsausdrücken kann in der Musik verändert @@ -35,7 +34,6 @@ in ein Kreuz. doctitlede = "Veränderung des Layouts von Verzierungen innerhalb der Noten" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Il est possible de changer globalement la mise en forme des petites diff --git a/Documentation/snippets/unfretted-headword.ly b/Documentation/snippets/unfretted-headword.ly index a6d6c26c85..aab47c5bd3 100644 --- a/Documentation/snippets/unfretted-headword.ly +++ b/Documentation/snippets/unfretted-headword.ly @@ -33,7 +33,7 @@ -\version "2.13.20" +\version "2.13.29" #(set-global-staff-size 15) %%% 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 2c768ee6fd..d85ea50413 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 @@ -6,7 +6,7 @@ \header { lsrtags = "staff-notation, contexts-and-engravers" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se puede usar el delimitador de comienzo de un sistema @code{SystemStartSquare} estableciéndolo explícitamente dentro de @@ -15,7 +15,6 @@ un contexto @code{StaffGroup} o @code{ChoirStaffGroup}. " doctitlees = "Uso del corchete recto al comienzo de un grupo de pentagramas" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Die Klammer zu Beginn von Systemgruppen kann auch in eine eckige Klammer @@ -24,7 +23,6 @@ im @code{StaffGroup}- oder @code{ChoirStaffGroup}-Kontext setzt. " doctitlede = "Eine eckige Klammer zu Beginn von Systemgruppen benutzen" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Un regroupement de portées sera indiqué par un simple rectangle diff --git a/Documentation/snippets/using-alternative-flag-styles.ly b/Documentation/snippets/using-alternative-flag-styles.ly index 56e7d819a1..6a1a81b9d2 100644 --- a/Documentation/snippets/using-alternative-flag-styles.ly +++ b/Documentation/snippets/using-alternative-flag-styles.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Se pueden imprimir estilos alternativos del corchete o gancho de las diff --git a/Documentation/snippets/using-double-slurs-for-legato-chords.ly b/Documentation/snippets/using-double-slurs-for-legato-chords.ly index 8c8c1c437f..6a59df39f5 100644 --- a/Documentation/snippets/using-double-slurs-for-legato-chords.ly +++ b/Documentation/snippets/using-double-slurs-for-legato-chords.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Algunos compositores escriben dos ligaduras cuando quieren acordes legato. Esto se puede conseguir estableciendo @code{doubleSlurs}. @@ -14,7 +14,6 @@ legato. Esto se puede conseguir estableciendo @code{doubleSlurs}. " doctitlees = "Utilizar ligaduras dobles para acordes legato" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Einige Komponisten schreiben doppelte Bögen, wenn Legato-Akkorde notiert @@ -22,7 +21,6 @@ werden. Das kann mit der Eigenschaft @code{doubleSlurs} erreicht werden. " doctitlede = "Doppelte Bögen für Legato-Akkorde benutzen" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Certains auteurs utilisent deux liaisons lorsqu'ils veulent 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 1ba5b5e622..1ff5d2ebc7 100644 --- a/Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly +++ b/Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Es posible aplicar la barrita que cruza la barra de las @@ -17,7 +17,6 @@ acciaccaturas, en otras situaciones. doctitlees = "Utilizar la barra que tacha las notas de adorno con notas normales" - %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b texidocfr = " Le trait que l'on trouve sur les hampes des acciaccatures peut 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 72ec41ab98..4ec260377f 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 @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.10 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " diff --git a/Documentation/snippets/using-the-whiteout-property.ly b/Documentation/snippets/using-the-whiteout-property.ly index 42f05e9903..90e84446b1 100644 --- a/Documentation/snippets/using-the-whiteout-property.ly +++ b/Documentation/snippets/using-the-whiteout-property.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.10 -\version "2.13.20" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " diff --git a/Documentation/snippets/using-ties-with-arpeggios.ly b/Documentation/snippets/using-ties-with-arpeggios.ly index c7ab880eb0..c1fe8f613a 100644 --- a/Documentation/snippets/using-ties-with-arpeggios.ly +++ b/Documentation/snippets/using-ties-with-arpeggios.ly @@ -6,7 +6,7 @@ \header { lsrtags = "rhythms" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b doctitlees = "Uso de ligaduras en los arpegios" texidoces = " En ocasiones se usan ligaduras de unión para escribir los arpegios. @@ -18,7 +18,6 @@ en principio también se puede usar para notas normales consecutivas. " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Überbindungen werden teilweise benutzt, um Arpeggios zu notieren. In @@ -31,7 +30,6 @@ für normale Überbindungen eingesetzt werden doctitlede = "Überbingungen für Arpeggio genutzen" - %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 texidocfr = " Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans diff --git a/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly b/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly index fa7a8b7bbc..7b3d4280c1 100644 --- a/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly +++ b/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly @@ -6,7 +6,7 @@ \header { lsrtags = "tweaks-and-overrides, spacing" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e @@ -21,7 +21,6 @@ largo de su línea de base. " doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Indem man die @code{'Y-extent}-Eigenschaft auf einen passenden Wert setzt, @@ -36,7 +35,6 @@ Grundlinie auszurichten. " doctitlede = "Vertikale Ausrichtung von Dynamik und Textbeschriftung beeinflussen" - %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 texidocfr = " Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les diff --git a/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly b/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly index 3e3f33e8dd..ff8e7ebb0f 100644 --- a/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly +++ b/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly @@ -6,7 +6,7 @@ \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Las expresiones dinámicas que se comienzan, terminan o se producen en la misma nota se alinean verticalmente. Para asegurar que las diff --git a/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly b/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly index 2a6c5701d2..6e1592c23c 100644 --- a/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly +++ b/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music, tweaks-and-overrides, spacing" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Este fragmento de código muestra el uso de las propiedades de contexto @code{alignBelowContext} y @code{alignAboveContext} para @@ -15,7 +15,6 @@ controlar la posición de la letra y los compases de ossia. " doctitlees = "Alineación vertical de la letra y los compases de ossia" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Dieser Schnipsel zeigt, wie man die Kontexteigenschaften @@ -24,7 +23,6 @@ die Positionierung von Gesangstext und Ossia-Abschnitten zu kontrollieren. " doctitlede = "Gesangstext und Ossia vertikal ausrichten" - %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e texidocfr = " Cet exemple illustre la manière de positionner une portée d'ossia et diff --git a/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly b/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly index 6e596d3645..4c1ef089f9 100644 --- a/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly +++ b/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly @@ -6,7 +6,7 @@ \header { lsrtags = "chords, tweaks-and-overrides" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Allí donde se utilicen líneas extensoras para el bajo cifrado mediante el establecimiento de @code{useBassFigureExtenders} al valor 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 01562cec32..4e2ad45546 100644 --- a/Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly +++ b/Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music, keyboards, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta plantilla añade una reducción de piano automática a la partitura @@ -19,7 +19,6 @@ entonces los cambios se aplicarán también a la reducción de piano. " doctitlees = "Plantilla de conjunto vocal con reducción de piano automática" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c @@ -27,7 +26,6 @@ entonces los cambios se aplicarán también a la reducción de piano. 定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic} の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。 " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " In diesem Beispiel wird ein automatischer Klavierauszug zu der @@ -37,7 +35,6 @@ irgendeine Änderung an einer Chorstimme vornehmen, (etwa tenorMusic), verändert sich auch der Klavierauszug entsprechend. " - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Ce canevas ajoute une réduction pour piano à une partition standard pour 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 4528a83858..7f140ff252 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 @@ -6,7 +6,7 @@ \header { lsrtags = "text, vocal-music, contexts-and-engravers, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta plantilla es, básicamente, la misma que la sencilla plantilla @qq{Conjunto vocal}, excepto que aquí todas las líneas de letra se @@ -16,13 +16,11 @@ colocan utilizando @code{alignAboveContext} y " doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が @code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。 " - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " In diesem Beispiel werden die Texte mit den Befehlen @@ -32,7 +30,6 @@ In diesem Beispiel werden die Texte mit den Befehlen doctitlede = "Vorlage für Vokalensemble mit dem Gesangstext über und unter dem System" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes. 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 735f8643a3..63e69207d1 100644 --- a/Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly +++ b/Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly @@ -2,10 +2,10 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.13.21 -\version "2.13.21" +\version "2.13.29" \header { -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Esta plantilla crea una partitura que comienza con una estrofa para @@ -26,7 +26,7 @@ use of spacer rests within the @code{\global} variable to define meter changes (and other elements common to all parts) throughout the entire score. " - doctitle = "Solo verse and two-part refrain" + doctitle = "Vocal ensemble template with verse and refrain" } % begin verbatim diff --git a/Documentation/snippets/vocal-ensemble-template.ly b/Documentation/snippets/vocal-ensemble-template.ly index 491c839194..606821ed8a 100644 --- a/Documentation/snippets/vocal-ensemble-template.ly +++ b/Documentation/snippets/vocal-ensemble-template.ly @@ -6,7 +6,7 @@ \header { lsrtags = "vocal-music, template" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " He aquí una partitura vocal estándar para cuatro voces SATB. Con grupos mayores, suele ser útil incluir una sección que aparezca en @@ -17,14 +17,12 @@ voces se reagrupan en sólo dos pentagramas. " doctitlees = "Plantilla de conjunto vocal" - %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 texidocja = " これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c 便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@c 歌\" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren @@ -35,7 +33,6 @@ sind fast immer gleich in allen Stimmen. doctitlede = "Vorlage für Vokalensemble" - %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a texidocfr = " Ce fichier constitue un canevas standard de partition pour chœur à diff --git a/Documentation/snippets/volta-below-chords.ly b/Documentation/snippets/volta-below-chords.ly index d264df42bb..a90556d4fe 100644 --- a/Documentation/snippets/volta-below-chords.ly +++ b/Documentation/snippets/volta-below-chords.ly @@ -6,7 +6,7 @@ \header { lsrtags = "repeats, staff-notation, chords" -%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7 +%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b texidoces = " Mediante la adición del grabador @code{Volta_engraver} al pentagrama pertinente, se pueden poner los corchetes de primera y @@ -16,7 +16,6 @@ segunda vez debajo de los acordes. doctitlees = "Corchetes de primera y segunda vez debajo de los acordes" - %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 texidocde = " Indem man den @code{Volta_engraver} zu dem entsprechenden Notensystem diff --git a/Documentation/snippets/wind-headword.ly b/Documentation/snippets/wind-headword.ly index a194237b61..fbeea97088 100644 --- a/Documentation/snippets/wind-headword.ly +++ b/Documentation/snippets/wind-headword.ly @@ -2,7 +2,7 @@ % generated from Documentation/snippets/new % This file is in the public domain. %% Note: this file works from version 2.12.0 -\version "2.13.20" +\version "2.13.29" #(set-global-staff-size 15) \paper { line-width = 16\cm diff --git a/Documentation/web.texi b/Documentation/web.texi index 7881e70b4c..4e57c29ec1 100644 --- a/Documentation/web.texi +++ b/Documentation/web.texi @@ -53,6 +53,27 @@ License''. @end copying +@c Info files are no longer installed in a subdirectory, images are +@c expected to be found in lilypond/ subdirectory. +@dircategory GNU LilyPond --- the music typesetter +@direntry +* LilyPond Learning Manual: (lilypond-learning). Start here. +* Music Glossary: (music-glossary). For non-English users. +* LilyPond: (lilypond-notation). LilyPond Notation Reference. +* LilyPond Snippets: (lilypond-snippets). Short tricks, tips, and examples. +* LilyPond Internals Reference: (lilypond-internals). Definitions for tweaking. +* LilyPond Application Usage: (lilypond-usage). Installing and running applications. +* LilyPond Website: (lilypond-web). Preview of new website. +* lilypond: (lilypond-usage)Running lilypond. Invoking the LilyPond program. +* abc2ly: (lilypond-usage)Invoking abc2ly. Importing ABC. +* convert-ly: (lilypond-usage)Updating files with convert-ly. Older LilyPond versions. +* etf2ly: (lilypond-usage)Invoking etf2ly. Importing Finale. +* lilypond-book: (lilypond-usage)lilypond-book. Integrating text and music. +* midi2ly: (lilypond-usage)Invoking midi2ly. Importing MIDI. +* musicxml2ly: (lilypond-usage)Invoking musicxml2ly. Importing MusicXML. +@end direntry + + @c TITLE PAGE @ifnottex @node Top @@ -182,27 +203,6 @@ Distributions will want to install lilypond.info in postinstall, doing: @end ignore -@c Info files are no longer installed in a subdirectory, images are -@c expected to be found in lilypond/ subdirectory. -@dircategory GNU LilyPond --- the music typesetter -@direntry -* LilyPond Learning Manual: (lilypond-learning). Start here. -* Music Glossary: (music-glossary). For non-English users. -* LilyPond: (lilypond-notation). LilyPond Notation Reference. -* LilyPond Snippets: (lilypond-snippets). Short tricks, tips, and examples. -* LilyPond Internals Reference: (lilypond-internals). Definitions for tweaking. -* LilyPond Application Usage: (lilypond-usage). Installing and running applications. -* LilyPond Website: (lilypond-web). Preview of new website. -* lilypond: (lilypond-usage)Running LilyPond. Invoking the LilyPond program. -* abc2ly: (lilypond-usage)Invoking abc2ly. Importing ABC. -* convert-ly: (lilypond-usage)Updating files with convert-ly. Older LilyPond versions. -* etf2ly: (lilypond-usage)Invoking etf2ly. Importing Finale. -* lilypond-book: (lilypond-usage)LilyPond-book. Integrating text and music. -* midi2ly: (lilypond-usage)Invoking midi2ly. Importing MIDI. -* musicxml2ly: (lilypond-usage)Invoking musicxml2ly. Importing MusicXML. -@end direntry - - @c FIXME: this still doesn't solve the broken links in pdf and big @c html; we'll need a bunch of @iftext and stuff in here. -gp @c ****************** SPECIAL MACROS FOR WEB MANUAL ************ diff --git a/Documentation/web/community.itexi b/Documentation/web/community.itexi index e9fa199c18..a9ae0ed3fa 100644 --- a/Documentation/web/community.itexi +++ b/Documentation/web/community.itexi @@ -808,9 +808,9 @@ with Constraint Satisfaction Programming}, International Computer Music Conference 2008. @item -A. Passos, M. Silva, P. Kroger, and G. Cidra, +Alexandre Tachard Passos, Marcos Sampaio, Pedro Kröger, Givaldo de Cidra, @emph{Functional Harmonic Analysis and Computational Musicology -in Rameau}, Proceedings of the 12th Brazilian Symposium on Compute +in Rameau}, Proceedings of the 12th Brazilian Symposium on Computer Music, 2009, pp. 207-210. @item @@ -820,11 +820,11 @@ New Trends in Artificial Intelligence, 2007 J. Neves et al ed. @item -Kevin C. Baird 2005. +Kevin C. Baird 2005, @emph{Real-time generation of music notation via audience interaction using python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces For Musical Expression (Vancouver, Canada, May 26 - 28, 2005). -New Interfaces For Musical Expression. National University of Singapore, Singapore, 240-241. + @end itemize diff --git a/Documentation/web/introduction.itexi b/Documentation/web/introduction.itexi index 2eb6974b12..58c933efde 100644 --- a/Documentation/web/introduction.itexi +++ b/Documentation/web/introduction.itexi @@ -545,8 +545,7 @@ high-quality scores of sacred music, available for immediate download or in traditional paper format. @item -@uref{http://theshadylanepublishing.com/, The Shady Lane -Publishing}, +@uref{http://www.shadylane.fr, The Shady Lane Publishing}, a @qq{micro musical publishing house} whose goal is to promote a new form of musical economy closer to the musicians and music lovers. @@ -1021,7 +1020,7 @@ are actively working to bring it up to our present stable version, 2.12.} @divEnd @divClass{column-center-top} -@subheading Emacs and Vim +@subheading Text editors @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} @@ -1050,19 +1049,7 @@ writing LilyPond input files. More information on setting up Emacs and Vim can be found in @rprogram{Text editor support}. -@divEnd - -@ignore these may not need to be here at all, as they are purely -MacOS scripts. - -@divClass{column-center-top} -@subheading Other - - -@subsubheading Text environment: TexShop - @sourceimage{logo-macosx,,,} - @uref{http://www.uoregon.edu/~koch/texshop} The TexShop editor for MacOS@tie{}X can be extended to run LilyPond, @@ -1073,21 +1060,18 @@ using the extensions available at: @uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} @end example -@subsubheading TextMate - @sourceimage{logo-macosx,,,} - -There is a LilyPond bundle for TextMate. It may be installed by -running: +There is a LilyPond bundle for TextMate, a commercial editor for MacOS. +It may be installed by running: @example mkdir -p /Library/Application\ Support/TextMate/Bundles cd /Library/Application\ Support/TextMate/Bundles -svn co http://svn.textmate.org/trunk/Bundles/LilyPond.tmbundle/ +git clone http://github.com/textmate/lilypond.tmbundle.git + @end example @divEnd -@end ignore @divClass{column-center-top} @subheading Other programs can export LilyPond code diff --git a/Documentation/web/ly-examples/granados.ly b/Documentation/web/ly-examples/granados.ly index 7b2c4275ae..9ddacb50a1 100644 --- a/Documentation/web/ly-examples/granados.ly +++ b/Documentation/web/ly-examples/granados.ly @@ -1,4 +1,4 @@ -\version "2.12.0" +\version "2.13.29" \include "example-header.ily" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -14,7 +14,7 @@ } -csh = \change Staff = "high" +csh = \change Staff = "high" csm = \change Staff = "middle" csl = \change Staff = "low" @@ -33,27 +33,28 @@ global = { upperVoiceOne = \relative c'' { \voiceOne \override TupletBracket #'transparent = ##t - 8\([ \times 4/5{g'32( aes g f g]) } + 8\([ \times 4/5{g'32( aes g f g]) } 8[ \times 4/5{32( c' bes aes bes]) } 8 \) | % end m. 1 %--------------------------------------------------% - 4\( \voiceTwo \) + 4\( \voiceTwo \) \slurUp 16( 8) % end m. 2 %--------------------------------------------------% \noBreak - \voiceOne + \voiceOne 8\([ \times 4/5{32( aes' g f g]) } \set subdivideBeams = ##t - \set beatLength = #(ly:make-moment 1 8) - 16 \times 4/5{ bes'32( c bes aes bes]) } - \set subdivideBeams = ##f - \ottava #1 16 \appoggiatura f8 16\) + \set baseMoment = #(ly:make-moment 1 8) + \set beatStructure = #'(2 2 2) + 16 \times 4/5{ bes'32( c bes aes bes]) } + \set subdivideBeams = ##f + \ottava #1 16 \appoggiatura f8 16\) } upperVoiceTwo = \relative c'' { \voiceTwo s8 c8\< [ c' \!] - s32 s32_\appassmolto s8. \voiceOne r8 -> s4 + s32 s32_\appassmolto s8. \voiceOne r8 -> s4 \override Stem #'cross-staff = ##t \override Stem #'length = #28 \override Stem #'flag-style = #'no-flag @@ -88,8 +89,9 @@ lowerVoiceOne = \relative c, { bes8 \csm \stemDown 8 s2 \csl \stemUp \set subdivideBeams = ##t - \set beatLength = #(ly:make-moment 1 16) - s8 \hideNotes \slurUp \stemDown + \set baseMoment = #(ly:make-moment 1 16) + \set beatStructure = #'(4 4 4) + s8 \hideNotes \slurUp \stemDown es,,64( bes'' s64 \unHideNotes \stemUp g64[ bes c d c]) s2 \set subdivideBeams = ##f bes,,8 \csm \stemDown 8 s2 @@ -97,15 +99,15 @@ lowerVoiceOne = \relative c, { lowerVoiceTwo = \relative c, { \voiceTwo - bes2. + bes2. \csh \once \override Beam #'damping = #+inf.0 - 8 \csl \slurUp - %\once\override Slur #'extra-offset = #'(0 . 4) - es,,64 bes' es g s32. + 8 \csl \slurUp + %\once\override Slur #'extra-offset = #'(0 . 4) + es,,64 bes' es g s32. c64 s4 - bes,,2. + bes,,2. } @@ -113,18 +115,18 @@ lowerVoiceTwo = \relative c, { \new PianoStaff << \set PianoStaff.connectArpeggios = ##t % \override PianoStaff.Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket - \new Staff = "high" << + \new Staff = "high" << \global \context Voice = "upperVoiceOne" { \upperVoiceOne } \context Voice = "upperVoiceTwo" { \upperVoiceTwo } >> - \new Staff = "middle" << + \new Staff = "middle" << \global \context Voice = "middleVoiceOne" { \middleVoiceOne } \context Voice = "middleVoiceTwo" { \middleVoiceTwo } >> - \new Staff = "low" << - \clef bass + \new Staff = "low" << + \clef bass \global \context Voice = "lowerVoiceOne" { \lowerVoiceOne } \context Voice = "lowerVoiceTwo" { \lowerVoiceTwo } diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-front.itexi index 0f033a7bd2..e62cc33f47 100644 --- a/Documentation/web/news-front.itexi +++ b/Documentation/web/news-front.itexi @@ -9,6 +9,30 @@ @c FIXME: fill in number @c used for news about the upcoming release; see CG x.y +@newsItem +@subsubheading LilyPond 2.13.29 released! @emph{July 13, 2010} + +We are happy to announce the release of LilyPond 2.13.29. This +release contains the usual number of bugfixes. However, a number +of critical issues still remain, so this release is intended for +developers only. + +This release includes some major untested changes to the windows +lilypad editor. Windows users should not be using this release +because it is intended for developers only, but you ignore these +warnings and try it anyway, use extra caution. +@newsEnd + +@newsItem +@subsubheading LilyPond 2.13.27 released! @emph{July 5, 2010} + +We are happy to announce the release of LilyPond 2.13.27. This +release contains the usual number of bugfixes. However, a number +of critical issues still remain, so this release is intended for +developers only. +@newsEnd + + @newsItem @subsubheading Testing our new website! @emph{June 29, 2010} diff --git a/GNUmakefile.in b/GNUmakefile.in index 04ce4e6e72..be6377078a 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -256,6 +256,7 @@ test: $(MAKE) -C input/regression/ out=test local-test $(MAKE) -C input/regression/musicxml out=test local-test $(MAKE) -C input/regression/abc2ly out=test local-test + $(MAKE) -C input/regression/lilypond-book out=test local-test test-baseline: @if test -d .git ; then \ @@ -266,6 +267,7 @@ test-baseline: $(MAKE) out=test -C input/regression/ local-test-baseline $(MAKE) out=test -C input/regression/musicxml local-test-baseline $(MAKE) out=test -C input/regression/abc2ly local-test-baseline + $(MAKE) out=test -C input/regression/lilypond-book local-test-baseline $(MAKE) test-snippets-clean diff --git a/VERSION b/VERSION index befb468893..b1ac8cbd0d 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=2 MINOR_VERSION=13 -PATCH_LEVEL=27 +PATCH_LEVEL=29 MY_PATCH_LEVEL= VERSION_STABLE=2.12.3 -VERSION_DEVEL=2.13.26 +VERSION_DEVEL=2.13.29 diff --git a/autogen.sh b/autogen.sh index 2fd8bebd5a..34c022e082 100755 --- a/autogen.sh +++ b/autogen.sh @@ -18,26 +18,6 @@ if [ ! -f autogen.sh -o stepmake/autogen.sh -nt autogen.sh ]; then exec ./autogen.sh "$@" fi -# Be paranoid: check for autoconf >= 2.50 -# Some setups have both autoconf 2.13 and 2.5x available through -# a wrapper script: /usr/bin/autoconf. -# This wrapper may incorrectly autoselect autoconf 2.50, but it -# advertises itself as autoconf 2.13. -# If you have such a setup, invoke this script as: -# autoconf=autoconf2.50 ./autogen.sh -for i in autoconf2.50 autoconf-2.50 autoconf false; do - version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'` - if test "0$version" -ge 250; then - autoconf=$i - break - fi -done - -if test -z "$autoconf"; then - echo "ERROR: Please install autoconf 2.50 or newer" - exit 1 -fi - for i in $srcdir/configure.in #`find $srcdir -name configure.in -print` do dir=`dirname $i` @@ -45,8 +25,11 @@ do ( cd $dir echo "Running autoconf ..." - $autoconf + autoconf || exit 1 ) + # Autoconf automatically checks its own minimum required + # version, and it aborts when the check fails. + test "$?" -eq 1 && exit 1 done #conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c diff --git a/config.make.in b/config.make.in index aab9e410c0..93158d88f4 100644 --- a/config.make.in +++ b/config.make.in @@ -101,6 +101,7 @@ CC = @CC@ CONFIGSUFFIX = @CONFIGSUFFIX@ CROSS = @cross_compiling@ CXX = @CXX@ +DBLATEX = @DBLATEX@ DEFINES = @DEFS@ @DEFINES@ DEFS = @DEFS@ DOCUMENTATION = @DOCUMENTATION@ @@ -125,6 +126,7 @@ MFMODE = @MFMODE@ MSGFMT = @MSGFMT@ PAPERSIZE=a4 PATHSEP = @PATHSEP@ +PDFLATEX = @PDFLATEX@ PERL = @PERL@ PLATFORM_WINDOWS = @PLATFORM_WINDOWS@ PYTHON = @PYTHON@ diff --git a/configure.in b/configure.in index 7c62b48bfa..f41aef700a 100644 --- a/configure.in +++ b/configure.in @@ -186,6 +186,8 @@ STEPMAKE_PERL(OPTIONAL) STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11) STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.82) +STEPMAKE_PROGS(DBLATEX, dblatex, OPTIONAL) +STEPMAKE_PROGS(PDFLATEX, pdflatex, OPTIONAL) AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}") diff --git a/input/regression/GNUmakefile b/input/regression/GNUmakefile index 605f138e99..e0c023d667 100644 --- a/input/regression/GNUmakefile +++ b/input/regression/GNUmakefile @@ -6,4 +6,4 @@ LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc include $(depth)/make/stepmake.make TITLE=LilyPond Regression Tests -SUBDIRS=musicxml abc2ly +SUBDIRS=musicxml abc2ly lilypond-book diff --git a/input/regression/auto-beam-beaming-override.ly b/input/regression/auto-beam-beaming-override.ly index afa8b99160..d6dd8f411a 100644 --- a/input/regression/auto-beam-beaming-override.ly +++ b/input/regression/auto-beam-beaming-override.ly @@ -8,14 +8,14 @@ beaming pattern related functions at the start of an autobeam." } -\version "2.12.0" +\version "2.13.29" \paper { ragged-right = ##t } { \time 2/4 b16 b b b b16 b b b \set subdivideBeams = ##t - \set Score.beatLength = #(ly:make-moment 1 8) + \set Score.baseMoment = #(ly:make-moment 1 8) b16 b b b b16 b b b } diff --git a/input/regression/beam-beat-grouping.ly b/input/regression/beam-beat-grouping.ly index 2be98d88bd..4f639f405c 100644 --- a/input/regression/beam-beat-grouping.ly +++ b/input/regression/beam-beat-grouping.ly @@ -1,7 +1,7 @@ \header { texidoc = "Default beaming patterns can be set for the current time -signature by @code{\\setBeatGrouping}. " +signature. " } \layout { @@ -12,8 +12,8 @@ signature by @code{\\setBeatGrouping}. " \relative c'' { \time 5/16 - \setBeatGrouping #'(2 3) + \set beatStructure = #'(2 3) c8[^"(2+3)" c16 c8] - \setBeatGrouping #'(3 2) + \set beatStructure = #'(3 2) c8[^"(3+2)" c16 c8] } diff --git a/input/regression/beaming-ternary-metrum.ly b/input/regression/beaming-ternary-metrum.ly index 907edf10f4..0580f2e6da 100644 --- a/input/regression/beaming-ternary-metrum.ly +++ b/input/regression/beaming-ternary-metrum.ly @@ -1,12 +1,11 @@ -\version "2.12.0" +\version "2.13.29" \header { - texidoc = "Automatic beaming works also in ternary time sigs. In - this case, the 8th is a beat, so the 16ths are split into two - groups. This can be avoided by overriding @code{beatLength} to be - three 8th notes." + texidoc = "Automatic beaming works also in ternary time sigs. + As desired, the measure is split in half, with beats 1-3 and + 4-6 beamed together as a whole." } @@ -14,8 +13,7 @@ \relative c'' { \time 6/8 - c8.[ c16 c16 c16] - \set beatLength = #(ly:make-moment 3 8) - c8.[ c16 c16 c16] + c8. c16 c16 c16 + c8. c16 c16 c16 } diff --git a/input/regression/chord-tremolo-articulations.ly b/input/regression/chord-tremolo-articulations.ly new file mode 100644 index 0000000000..7b862fc579 --- /dev/null +++ b/input/regression/chord-tremolo-articulations.ly @@ -0,0 +1,22 @@ +\version "2.12.0" + +\header{ +texidoc=" +Articulations on chord tremolos should not confuse the time-scaling of the +notes. In particular, only the number of real notes should be considered. +" +} + +\context Voice \relative c' { + \repeat "tremolo" 4 { d16\f e-. } + \repeat "tremolo" 4 { d16-> e } | \barNumberCheck #2 + \repeat "tremolo" 4 { d16 e\f } + \repeat "tremolo" 8 { d32\> e\! } | \barNumberCheck #3 + \repeat "tremolo" 2 { d8\trill e } + \repeat "tremolo" 2 { d8\sfz e } | \barNumberCheck #4 + + \time 2/4 + \repeat "tremolo" 8 { d32^"Markup" e } | \barNumberCheck #5 + c4 c4 +} + diff --git a/input/regression/include-string.ly b/input/regression/include-string.ly new file mode 100644 index 0000000000..256cc5ab23 --- /dev/null +++ b/input/regression/include-string.ly @@ -0,0 +1,8 @@ +\version "2.13.29" + +\header { + texidoc = "@code{ly:parser-include-string} should include the current +string like a file @code{\include}." +} + +#(ly:parser-include-string parser "\\relative c' { a4 b c d }") diff --git a/input/regression/laissez-vibrer-tie-head-direction.ly b/input/regression/laissez-vibrer-tie-head-direction.ly new file mode 100644 index 0000000000..908a06c45a --- /dev/null +++ b/input/regression/laissez-vibrer-tie-head-direction.ly @@ -0,0 +1,14 @@ +\version "2.13.27" +\header { + + texidoc = "The 'head-direction of a LaissezVibrerTieColumn should +be able to be set without causing a segmentation fault." + +} + +\relative c'' { + c2 \laissezVibrer + \once \override LaissezVibrerTieColumn #'head-direction = #RIGHT + c \laissezVibrer +} + diff --git a/input/regression/les-nereides.ly b/input/regression/les-nereides.ly index 53866b4780..590e6607f4 100644 --- a/input/regression/les-nereides.ly +++ b/input/regression/les-nereides.ly @@ -1,4 +1,4 @@ -\version "2.13.4" +\version "2.13.29" \header { composer = "ARTHUR GRAY" @@ -235,9 +235,8 @@ middleDynamics = { theScore = \score{ \context PianoStaff << \new Staff = "treble" << - \overrideBeamSettings #'Score #'(4 . 4) #'end - #'((* . (1 1 1 1)) - ((1 . 32) (4 4 4 4 4 4 4 4))) + \set beamExceptions = #'((end . (((1 . 8) . (2 2 2 2)) + ((1 . 32) . (4 4 4 4 4 4 4 4))))) \treble \trebleTwo >> diff --git a/input/regression/lilypond-book/GNUmakefile b/input/regression/lilypond-book/GNUmakefile new file mode 100644 index 0000000000..a1e5bdc3b7 --- /dev/null +++ b/input/regression/lilypond-book/GNUmakefile @@ -0,0 +1,10 @@ +depth = ../../.. + +STEPMAKE_TEMPLATES=documentation texinfo +LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc lilypond-book + +COLLATED_FILES = $(OUT_FILES) + +include $(depth)/make/stepmake.make + +TITLE=lilypond-book Test Suite diff --git a/input/regression/lilypond-book/html-include-space-after-tag.html b/input/regression/lilypond-book/html-include-space-after-tag.html new file mode 100644 index 0000000000..0a408c1772 --- /dev/null +++ b/input/regression/lilypond-book/html-include-space-after-tag.html @@ -0,0 +1,9 @@ + + +Including a ly file with newline and spaces in the tags. + +include.ly + + + diff --git a/input/regression/lilypond-book/html-inline-newline-during-tag.html b/input/regression/lilypond-book/html-inline-newline-during-tag.html new file mode 100644 index 0000000000..658655cf3d --- /dev/null +++ b/input/regression/lilypond-book/html-inline-newline-during-tag.html @@ -0,0 +1,6 @@ + + +Some music in a line of text with a newline before the tag end. + + diff --git a/input/regression/lilypond-book/html-inline-no-options.html b/input/regression/lilypond-book/html-inline-no-options.html new file mode 100644 index 0000000000..8670c2ce8a --- /dev/null +++ b/input/regression/lilypond-book/html-inline-no-options.html @@ -0,0 +1,4 @@ + +Some music in a line of text. + + diff --git a/input/regression/lilypond-book/html-inline-option.html b/input/regression/lilypond-book/html-inline-option.html new file mode 100644 index 0000000000..dfb1099d95 --- /dev/null +++ b/input/regression/lilypond-book/html-inline-option.html @@ -0,0 +1,4 @@ + +Some music in a line of text. + + diff --git a/input/regression/lilypond-book/html-lilypond-block.html b/input/regression/lilypond-book/html-lilypond-block.html new file mode 100644 index 0000000000..dfaf1c1e81 --- /dev/null +++ b/input/regression/lilypond-book/html-lilypond-block.html @@ -0,0 +1,10 @@ + + +A simple lilypond snippet as a stand-alone paragraph: + + +\relative c' {\repeat unfold 20 c4} + + + + diff --git a/input/regression/lilypond-book/html-newline-after-tag.html b/input/regression/lilypond-book/html-newline-after-tag.html new file mode 100644 index 0000000000..2ad549cab8 --- /dev/null +++ b/input/regression/lilypond-book/html-newline-after-tag.html @@ -0,0 +1,10 @@ + + +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 new file mode 100644 index 0000000000..a0be117f61 --- /dev/null +++ b/input/regression/lilypond-book/html-space-after-tag.html @@ -0,0 +1,8 @@ + + +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 new file mode 100644 index 0000000000..8519705199 --- /dev/null +++ b/input/regression/lilypond-book/html-version-newline.html @@ -0,0 +1,6 @@ + + +Lilypond version: + + diff --git a/input/regression/lilypond-book/html-version.html b/input/regression/lilypond-book/html-version.html new file mode 100644 index 0000000000..3fdc33272d --- /dev/null +++ b/input/regression/lilypond-book/html-version.html @@ -0,0 +1,5 @@ + + +Lilypond version: + + diff --git a/input/regression/lilypond-book/include.ly b/input/regression/lilypond-book/include.ly new file mode 100644 index 0000000000..364f2ca988 --- /dev/null +++ b/input/regression/lilypond-book/include.ly @@ -0,0 +1,4 @@ +\version "2.12.0" +\score { + \relative c'' { \key c \minor c4 es g2 } +} diff --git a/input/regression/lilypond-book/include2.ly b/input/regression/lilypond-book/include2.ly new file mode 100644 index 0000000000..2452924fb7 --- /dev/null +++ b/input/regression/lilypond-book/include2.ly @@ -0,0 +1,4 @@ +\version "2.12.0" +\score { + \relative c'' { \key c \minor d4 es g2 } +} diff --git a/input/regression/lilypond-book/include3.ily b/input/regression/lilypond-book/include3.ily new file mode 100644 index 0000000000..818ff12bd1 --- /dev/null +++ b/input/regression/lilypond-book/include3.ily @@ -0,0 +1,15 @@ +\version "2.13.20" + +\header { +doctitlees = "If you see this 'translated' doctitle, language detection work" + +texidoces = "If you see this 'translated' texidoc, language detection work" + + texidoc = "Original texidoc (you should not see this!)" + doctitle = "Original doctitle (you should not see this!)" +} + +\relative c'' { + c1 +} + diff --git a/input/regression/lilypond-book/suffix-html.html b/input/regression/lilypond-book/suffix-html.html new file mode 100644 index 0000000000..a8582f7817 --- /dev/null +++ b/input/regression/lilypond-book/suffix-html.html @@ -0,0 +1,8 @@ + + +Testing lilypond-book HTML mode with .html file suffix. + +\key c \minor c4 es g2 + + + diff --git a/input/regression/lilypond-book/suffix-htmly.htmly b/input/regression/lilypond-book/suffix-htmly.htmly new file mode 100644 index 0000000000..0c7e83af75 --- /dev/null +++ b/input/regression/lilypond-book/suffix-htmly.htmly @@ -0,0 +1,8 @@ + + +Testing lilypond-book HTML mode with .htmly file suffix. + +\key c \minor c4 es g2 + + + diff --git a/input/regression/lilypond-book/suffix-itely.itely b/input/regression/lilypond-book/suffix-itely.itely new file mode 100644 index 0000000000..8b89751f52 --- /dev/null +++ b/input/regression/lilypond-book/suffix-itely.itely @@ -0,0 +1,14 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +@setfilename suffix-itely.info +@settitle lilypond-book Suffix test for itely + +@node Top +@top Suffix test for itely + +Testing lilypond-book texinfo mode with .itely file suffix. +@lilypond[fragment,relative=2] +\key c \minor c4 e d2 +@end lilypond + + +@bye diff --git a/input/regression/lilypond-book/suffix-latex.latex b/input/regression/lilypond-book/suffix-latex.latex new file mode 100644 index 0000000000..80fb0049b3 --- /dev/null +++ b/input/regression/lilypond-book/suffix-latex.latex @@ -0,0 +1,7 @@ +\documentclass{article} +\begin{document} +Testing lilypond-book tex mode with .latex file suffix. +\begin[fragment,relative=2]{lilypond} +\key c \minor c4 e d2 +\end{lilypond} +\end{document} diff --git a/input/regression/lilypond-book/suffix-lytex.lytex b/input/regression/lilypond-book/suffix-lytex.lytex new file mode 100644 index 0000000000..e9216aa0d0 --- /dev/null +++ b/input/regression/lilypond-book/suffix-lytex.lytex @@ -0,0 +1,7 @@ +\documentclass{article} +\begin{document} +Testing lilypond-book tex mode with .lytex file suffix. +\begin[fragment,relative=2]{lilypond} +\key c \minor c4 es d2 +\end{lilypond} +\end{document} diff --git a/input/regression/lilypond-book/suffix-lyxml.lyxml b/input/regression/lilypond-book/suffix-lyxml.lyxml new file mode 100644 index 0000000000..0e8c8ae9a4 --- /dev/null +++ b/input/regression/lilypond-book/suffix-lyxml.lyxml @@ -0,0 +1,14 @@ + + + + Suffix test for lyxml + Testing lilypond-book DocBook mode with .lyxml file suffix. + + + + \key c \minor c4 es g2 + + + + + \ No newline at end of file diff --git a/input/regression/lilypond-book/suffix-tely.tely b/input/regression/lilypond-book/suffix-tely.tely new file mode 100644 index 0000000000..60a2eb09ef --- /dev/null +++ b/input/regression/lilypond-book/suffix-tely.tely @@ -0,0 +1,14 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +@setfilename suffix-tely.info +@settitle lilypond-book Suffix test for tely + +@node Top +@top Suffix test for tely + +Testing lilypond-book texinfo mode with .tely file suffix. +@lilypond[fragment,relative=2] +\key c \minor c4 e d2 +@end lilypond + + +@bye diff --git a/input/regression/lilypond-book/suffix-tex.tex b/input/regression/lilypond-book/suffix-tex.tex new file mode 100644 index 0000000000..d388c6f3e6 --- /dev/null +++ b/input/regression/lilypond-book/suffix-tex.tex @@ -0,0 +1,7 @@ +\documentclass{article} +\begin{document} +Testing lilypond-book tex mode with .tex file suffix. +\begin{lilypond}[fragment,relative=2] +\key c \minor c4 dis d2 +\end{lilypond} +\end{document} diff --git a/input/regression/lilypond-book/suffix-texi.texi b/input/regression/lilypond-book/suffix-texi.texi new file mode 100644 index 0000000000..0670343e96 --- /dev/null +++ b/input/regression/lilypond-book/suffix-texi.texi @@ -0,0 +1,14 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +@setfilename suffix-texi.info +@settitle lilypond-book Suffix test for texi + +@node Top +@top Suffix test for texi + +Testing lilypond-book texinfo mode with .texi file suffix. +@lilypond[fragment,relative=2] +\key c \minor c4 e d2 +@end lilypond + + +@bye diff --git a/input/regression/lilypond-book/suffix-texinfo.texinfo b/input/regression/lilypond-book/suffix-texinfo.texinfo new file mode 100644 index 0000000000..11cea1521d --- /dev/null +++ b/input/regression/lilypond-book/suffix-texinfo.texinfo @@ -0,0 +1,14 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +@setfilename suffix-texinfo.info +@settitle lilypond-book Suffix test for texinfo + +@node Top +@top Suffix test for texinfo + +Testing lilypond-book texinfo mode with .texinfo file suffix. +@lilypond[fragment,relative=2] +\key c \minor c4 e d2 +@end lilypond + + +@bye diff --git a/input/regression/lilypond-book/suffix-xml.xml b/input/regression/lilypond-book/suffix-xml.xml new file mode 100644 index 0000000000..d04ce54e3f --- /dev/null +++ b/input/regression/lilypond-book/suffix-xml.xml @@ -0,0 +1,8 @@ + + +Testing lilypond-book HTML mode with .xml file suffix. + +\key c \minor c4 es g2 + + + diff --git a/input/regression/lilypond-book/tex-auto-linebreak.lytex b/input/regression/lilypond-book/tex-auto-linebreak.lytex new file mode 100644 index 0000000000..a76e9e17c8 --- /dev/null +++ b/input/regression/lilypond-book/tex-auto-linebreak.lytex @@ -0,0 +1,22 @@ +\documentclass[a4paper]{article} + +\begin{document} + +Documents for \verb+lilypond-book+ may freely mix music and text. The music +snippets will be properly line-broken. For example, + +\begin{lilypond} +\relative c' { + c2 g'2 \times 2/3 { f8 e d } c'2 g4 + c,2 g'2 \times 2/3 { f8 e d } c'2 g4 + c,2 g'2 \times 2/3 { f8 e d } c'2 g4 + c,2 g'2 \times 2/3 { f8 e d } c'2 g4 + c,2 g'2 \times 2/3 { f8 e d } c'2 g4 + c,2 g'2 \times 2/3 { f8 e d } c'2 g4 + c,2 g'2 \times 2/3 { f8 e d } c'2 g4 + c,2 g'2 \times 2/3 { f8 e d } c'2 g4 +} +\end{lilypond} + + +\end{document} \ No newline at end of file diff --git a/input/regression/lilypond-book/tex-comment-firstline.lytex b/input/regression/lilypond-book/tex-comment-firstline.lytex new file mode 100644 index 0000000000..5d0ae0c0a3 --- /dev/null +++ b/input/regression/lilypond-book/tex-comment-firstline.lytex @@ -0,0 +1,17 @@ +% A comment on the first line should not confuse lilypond-book's format +% detection +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +\section{A coment on the first line of the file} + +This should not confuse the auto-detection of lilypond-book... + +\begin{lilypond} +\score{ + \relative c'{c d e f g a b c} +} +\end{lilypond} + +\end{document} diff --git a/input/regression/lilypond-book/tex-comments.lytex b/input/regression/lilypond-book/tex-comments.lytex new file mode 100644 index 0000000000..72bf7f2a81 --- /dev/null +++ b/input/regression/lilypond-book/tex-comments.lytex @@ -0,0 +1,28 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + + +\subsection{LaTeX comments} +This is a line with lilypond code +after the comment char % \lilypond{\context Voice <>} +% \lilypond{\context Voice <>} + +If you do not see any music above +this line, then lilypond-book is handling latex comments pretty well :-) + +The following snippet is preceded by a comment that would start a lilypond +environment + +%%\begin{lilypond} +\begin{lilypond}[11pt,fragment] +\context Voice <> +\end{lilypond} + +A single-line comment inside a fragment does not confuse lilypond-book: + +\begin{lilypond}[fragment] +c d e %\score +\end{lilypond} + +\end{document} diff --git a/input/regression/lilypond-book/tex-compatibility-mode.lytex b/input/regression/lilypond-book/tex-compatibility-mode.lytex new file mode 100644 index 0000000000..aab288e7b3 --- /dev/null +++ b/input/regression/lilypond-book/tex-compatibility-mode.lytex @@ -0,0 +1,10 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} +\section{LilyPond snippets with deprecated options} + +A snippet with a deprecated option, triggering compatibility mode: + +\lilypond[11pt,fragment]{c' e' g'} + +\end{document} diff --git a/input/regression/lilypond-book/tex-footnote.lytex b/input/regression/lilypond-book/tex-footnote.lytex new file mode 100644 index 0000000000..cd7c9307c4 --- /dev/null +++ b/input/regression/lilypond-book/tex-footnote.lytex @@ -0,0 +1,11 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} +\section{LilyPond snippets in a footnote} + +Test for snippets in a footnote\footnote{Here's the footnote: +\lilypond[fragment]{c' e' g'} }: +\marginpar{ Yes, even as marginpar +\lilypond[fragment]{c' d' e'} } + +\end{document} diff --git a/input/regression/lilypond-book/tex-fragment.lytex b/input/regression/lilypond-book/tex-fragment.lytex new file mode 100644 index 0000000000..4adc809b8a --- /dev/null +++ b/input/regression/lilypond-book/tex-fragment.lytex @@ -0,0 +1,19 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +\section{Using lilypond-book's fragment option} + +If a snippet is not a fully valid LilyPond file, you have +to use the \verb|fragment| option: + +\begin{lilypond}[fragment] +c d e +\end{lilypond} + +% TODO: \verb does not yet work!!! +There is also a shorthand version %\verb|\lilypond[fragment]{c' e' g'}|: + +\lilypond[fragment]{c' e' g'} + +\end{document} diff --git a/input/regression/lilypond-book/tex-graphics-package-added.lytex b/input/regression/lilypond-book/tex-graphics-package-added.lytex new file mode 100644 index 0000000000..d94360ab54 --- /dev/null +++ b/input/regression/lilypond-book/tex-graphics-package-added.lytex @@ -0,0 +1,10 @@ +\documentclass[a4paper]{article} + +\begin{document} + +\section{Lilypond-book should add the graphicx package} + +If a latex file does not yet include the graphicx package, it is added by +lilypond-book. + +\end{document} diff --git a/input/regression/lilypond-book/tex-include-file.lytex b/input/regression/lilypond-book/tex-include-file.lytex new file mode 100644 index 0000000000..6705a7ff14 --- /dev/null +++ b/input/regression/lilypond-book/tex-include-file.lytex @@ -0,0 +1,5 @@ +\documentclass{article} +\begin{document} +Including Lilypond file: +\lilypondfile{include2.ly} +\end{document} diff --git a/input/regression/lilypond-book/tex-include-options.lytex b/input/regression/lilypond-book/tex-include-options.lytex new file mode 100644 index 0000000000..a53fb5dcd0 --- /dev/null +++ b/input/regression/lilypond-book/tex-include-options.lytex @@ -0,0 +1,5 @@ +\documentclass{article} +\begin{document} +Including Lilypond file with options (quote and noindent): +\lilypondfile[quote,noindent]{include2.ly} +\end{document} diff --git a/input/regression/lilypond-book/tex-inline-lilypond.lytex b/input/regression/lilypond-book/tex-inline-lilypond.lytex new file mode 100644 index 0000000000..0d4886a5b0 --- /dev/null +++ b/input/regression/lilypond-book/tex-inline-lilypond.lytex @@ -0,0 +1,4 @@ +\documentclass{article} +\begin{document} +Adding Lilypond code inline: \lilypond[relative=2]{ d g ceses } +\end{document} diff --git a/input/regression/lilypond-book/tex-lilypond-block.lytex b/input/regression/lilypond-book/tex-lilypond-block.lytex new file mode 100644 index 0000000000..ad76d3c2f5 --- /dev/null +++ b/input/regression/lilypond-book/tex-lilypond-block.lytex @@ -0,0 +1,15 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +\section{Simple lilypond blocks} + +A simple scale: + +\begin{lilypond} +\score{ + \relative c' { c d e f g a b c } +} +\end{lilypond} + +\end{document} diff --git a/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex b/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex new file mode 100644 index 0000000000..91d78bb60f --- /dev/null +++ b/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex @@ -0,0 +1,21 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +\section{Lilypond snippets inside lists:} + +Itemize environment: +\begin{itemize} +\item +\lilypond[11pt,fragment]{ c'} do +\item +\lilypond[11pt,fragment]{d'} re +\item +\lilypond[11pt,fragment]{e'} mi +\item +\lilypond[11pt,fragment]{f'} fa +\item +\lilypond[11pt,fragment]{g'} sol +\end{itemize} + +\end{document} diff --git a/input/regression/lilypond-book/tex-lilypond-inside-table.lytex b/input/regression/lilypond-book/tex-lilypond-inside-table.lytex new file mode 100644 index 0000000000..a75c4df735 --- /dev/null +++ b/input/regression/lilypond-book/tex-lilypond-inside-table.lytex @@ -0,0 +1,20 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +\section{Lilypond snippets inside tables:} + +Tables: + +\begin{tabular}{|l|l|r|} +\hline +\em Notes & \em Name \\ +\hline +\lilypond[11pt,fragment,filename="cdur"]{\context Voice <>} & major \\ +\lilypond[11pt,fragment]{\context Voice <>} & minor \\ +\lilypond[11pt,fragment]{\context Voice <>} & diminished \\ +\lilypond[11pt,fragment]{\context Voice <>} & augmented \\ +\hline +\end{tabular} + +\end{document} diff --git a/input/regression/lilypond-book/tex-lilypondversion.lytex b/input/regression/lilypond-book/tex-lilypondversion.lytex new file mode 100644 index 0000000000..d8102c7672 --- /dev/null +++ b/input/regression/lilypond-book/tex-lilypondversion.lytex @@ -0,0 +1,10 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +Version: \lilypondversion + +A digit immediately after the version: \lilypondversion9 +A formula immediately after the version: \lilypondversion$x_k$ + +\end{document} diff --git a/input/regression/lilypond-book/tex-paragraphs.lytex b/input/regression/lilypond-book/tex-paragraphs.lytex new file mode 100644 index 0000000000..da2452981e --- /dev/null +++ b/input/regression/lilypond-book/tex-paragraphs.lytex @@ -0,0 +1,30 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + + +\section{Paragraphs and line spacing} + +Testing of spacing. The next music is surrounded by an empty line. +text text text text text text text text text text text text +text text text text text text text text text text text text + +\begin{lilypond} +\score{ \relative c'{ c d e f g a b c} } +\end{lilypond} + +text text text text text text text text text text text text +text text text text text text text text text text text text +text text text text text text text text text text text text + +Next has no empty lines. +text text text text text text text text text text text text +text text text text text text text text text text text text +text text text text text text text text text text text text +\begin{lilypond} +\score{ \relative c'{ c d e f g a b c} } +\end{lilypond} +text text text text text text text text text text text text +text text text text text text text text text text text text + +\end{document} diff --git a/input/regression/lilypond-book/tex-snippet-options.lytex b/input/regression/lilypond-book/tex-snippet-options.lytex new file mode 100644 index 0000000000..1f175af37e --- /dev/null +++ b/input/regression/lilypond-book/tex-snippet-options.lytex @@ -0,0 +1,38 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +\section{Snippet options} + +Fragment: +\begin{lilypond}[fragment] +c d e %\score +\end{lilypond} + +This shows the verbatim option: +\begin{lilypond}[fragment,verbatim] +c' d' e' +\end{lilypond} + +printfilename: +\lilypondfile[printfilename]{include.ly} + +staffsize: +\begin{lilypond}[staffsize=7,fragment] +\context Voice <> +\end{lilypond} +\lilypond[fragment,staffsize=7]{\context Voice <>} + +relative: +\lilypond[relative=1]{ c4 f b e } + +quote: +\lilypond[quote,fragment]{\relative c' c1 } + +fragment, quote, staffsize=26, verbatim: +\begin{lilypond}[fragment,quote,staffsize=26,verbatim] + c'4 f16 +\end{lilypond} + + +\end{document} diff --git a/input/regression/lilypond-book/tex-twocolumn.lytex b/input/regression/lilypond-book/tex-twocolumn.lytex new file mode 100644 index 0000000000..69c10bb7be --- /dev/null +++ b/input/regression/lilypond-book/tex-twocolumn.lytex @@ -0,0 +1,17 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} +\twocolumn + +\section{A latex file with two columns} + +In this example, the width auto-detection shall detect the two columns +and produce snippets that have the smaller width for a column! + +\begin{lilypond} +\score{ + \relative c'{c d e f g a b c | c d e f g a b c | c d e f g a b c} +} +\end{lilypond} + +\end{document} diff --git a/input/regression/lilypond-book/tex-verbatim.lytex b/input/regression/lilypond-book/tex-verbatim.lytex new file mode 100644 index 0000000000..363138d454 --- /dev/null +++ b/input/regression/lilypond-book/tex-verbatim.lytex @@ -0,0 +1,45 @@ +\documentclass[a4paper, 12pt]{article} + +\begin{document} + +\section{verb and verbatim} + +This file should not contain (and produce) any lilypond images! + +Snippets inside a verbatim environment or a comment are not run through +lilypond, but left as is. + +% TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now! +% \verb|\lilypond[fragment]{c' d' e'}| +% +% and + +\begin{verbatim} +\begin{lilypond} +c d e +\end{lilypond} +\end{verbatim} + + +As you can see, the begin/end lilypond commands inside +do not confuse lilypond-book. + +% TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now! +% \verb|\begin{lilypond}[fragment]c d e\end{lilypond}| + +% \verb+\lilypondfile[quote,noindent]{screech-boink.ly}+ + +Neither does a verbatim inside verb: + +\verb|\begin{verbatim}\begin{lilypond}[fragment]c d e\end{lilypond}\end{verbatim}| + +or verb inside verbatim: + +\begin{verbatim} +\verb|\begin{lilypond}[fragment]c d e\end{lilypond}| +\end{verbatim} + +But these are just to stress \verb|lilypond-book|. + + +\end{document} diff --git a/input/regression/lilypond-book/tex-version.lytex b/input/regression/lilypond-book/tex-version.lytex new file mode 100644 index 0000000000..9509cc8a31 --- /dev/null +++ b/input/regression/lilypond-book/tex-version.lytex @@ -0,0 +1,4 @@ +\documentclass{article} +\begin{document} +Lilypond version: \lilypondversion +\end{document} diff --git a/input/regression/lilypond-book/texinfo-include-language-detection-included.itely b/input/regression/lilypond-book/texinfo-include-language-detection-included.itely new file mode 100644 index 0000000000..e8b101b68b --- /dev/null +++ b/input/regression/lilypond-book/texinfo-include-language-detection-included.itely @@ -0,0 +1,2 @@ +The texidoc of the following snippet should be "translated": +@lilypondfile[printfilename,texidoc,doctitle]{include3.ily} diff --git a/input/regression/lilypond-book/texinfo-include-language-detection.tely b/input/regression/lilypond-book/texinfo-include-language-detection.tely new file mode 100644 index 0000000000..d4c4c1e396 --- /dev/null +++ b/input/regression/lilypond-book/texinfo-include-language-detection.tely @@ -0,0 +1,13 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- +@setfilename texinfo-language-detection.info +@settitle Texinfo language detection +@documentencoding UTF-8 +@documentlanguage es +@afourpaper + +@node Top +@top Texinfo language detection + +@include texinfo-include-language-detection-included.itely + +@bye diff --git a/input/regression/lilypond-book/texinfo-language-detection.tely b/input/regression/lilypond-book/texinfo-language-detection.tely new file mode 100644 index 0000000000..7bf5289342 --- /dev/null +++ b/input/regression/lilypond-book/texinfo-language-detection.tely @@ -0,0 +1,15 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- +@setfilename texinfo-language-detection.info +@settitle Texinfo language detection +@documentencoding UTF-8 +@documentlanguage es +@afourpaper + +@node Top +@top Texinfo language detection + +The texidoc of the following snippet should be "translated": +@lilypondfile[printfilename,texidoc,doctitle]{include3.ily} + + +@bye diff --git a/input/regression/musicxml/GNUmakefile b/input/regression/musicxml/GNUmakefile index aa0f294db4..b343d88b6f 100644 --- a/input/regression/musicxml/GNUmakefile +++ b/input/regression/musicxml/GNUmakefile @@ -26,4 +26,4 @@ endif zip: $(outdir)/MusicXML-TestSuite-$(TEST_SUITE_VERSION).zip $(outdir)/MusicXML-TestSuite-$(TEST_SUITE_VERSION).zip: $(MUSICXML_FILES) $(MUSICMXL_FILES) LICENSE - $(ZIP) -r $@ $(addprefix $(src-dir)/,$(MUSICXML_FILES)) $(addprefix $(src-dir)/,$(MUSICMXL_FILES)) LICENSE + $(ZIP) -q -r $@ $(addprefix $(src-dir)/,$(MUSICXML_FILES)) $(addprefix $(src-dir)/,$(MUSICMXL_FILES)) LICENSE diff --git a/input/regression/page-breaking-min-distance.ly b/input/regression/page-breaking-min-distance.ly new file mode 100644 index 0000000000..ad8dbdb20a --- /dev/null +++ b/input/regression/page-breaking-min-distance.ly @@ -0,0 +1,18 @@ +\version "2.13.22" + +\header { + texidoc = "minimum-distance is correctly accounted for in page breaking." +} + +\book { + \paper { + between-scores-system-spacing #'minimum-distance = #'20 + paper-height = 8\cm + } + + \score { c'1 } + \score { c'1 } + \score { c'1 } + \score { c'1 } +} + diff --git a/input/regression/repeat-tremolo-one-note-articulation.ly b/input/regression/repeat-tremolo-one-note-articulation.ly new file mode 100644 index 0000000000..f75e5c7f37 --- /dev/null +++ b/input/regression/repeat-tremolo-one-note-articulation.ly @@ -0,0 +1,19 @@ +\version "2.13.29" + +\header { + texidoc = "A tremolo repeat containing only one note (no sequential music) + shall not be scaled. An articulation or dynamic sign on the note should not + confuse lilypond." +} + +\paper { ragged-right = ##t } +\score { + \new Staff \relative c'' { + \repeat tremolo 4 { a16 } + \repeat tremolo 4 { a16\f } + \repeat tremolo 4 a16 + \repeat tremolo 4 a16\f | + \repeat tremolo 4 a16\f-> + c2. | + } +} diff --git a/input/regression/repeat-tremolo-three-notes.ly b/input/regression/repeat-tremolo-three-notes.ly new file mode 100644 index 0000000000..3592584e9d --- /dev/null +++ b/input/regression/repeat-tremolo-three-notes.ly @@ -0,0 +1,19 @@ +\version "2.13.29" + +\header { + texidoc = "A tremolo can have more than two notes. Also check that +linebreaks between tremolos still work and that empty tremolos don't crash." +} + +\paper { ragged-right = ##t } +\score { + \new Staff \relative c' { + \time 3/4 + \repeat tremolo 16 { a64 c e } | + \repeat tremolo 8 { a,64 c e } + \repeat tremolo 4 { a,64 c e } + \repeat tremolo 2 { a,32 c e } |\break + \repeat tremolo 16 { a64 c e } + \repeat tremolo 8 {} | + } +} diff --git a/lily/accidental-engraver.cc b/lily/accidental-engraver.cc index 817da93c97..d74c8fb110 100644 --- a/lily/accidental-engraver.cc +++ b/lily/accidental-engraver.cc @@ -437,6 +437,7 @@ Accidental_engraver::stop_translation_timestep () accidental_placement_ = 0; accidentals_.clear (); + note_columns_.clear (); left_objects_.clear (); right_objects_.clear (); } diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index fda5a9b93e..c976688a0d 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -147,7 +147,7 @@ Auto_beam_engraver::Auto_beam_engraver () forbid_ = 0; process_acknowledged_count_ = 0; stems_ = 0; - shortest_mom_ = Moment (Rational (1, 8)); + shortest_mom_ = Moment (Rational (1, 4)); finished_beam_ = 0; finished_grouping_ = 0; grouping_ = 0; @@ -167,7 +167,7 @@ Auto_beam_engraver::test_moment (Direction dir, Moment test_mom, Moment dur) return scm_call_4 (get_property ("autoBeamCheck"), context ()->self_scm (), scm_from_int (dir), - test_mom.smobbed_copy(), + test_mom.smobbed_copy (), dur.smobbed_copy ()) != SCM_BOOL_F; } @@ -253,7 +253,7 @@ Auto_beam_engraver::junk_beam () grouping_ = 0; beam_settings_ = SCM_EOL; - shortest_mom_ = Moment (Rational (1, 8)); + shortest_mom_ = Moment (Rational (1, 4)); } void @@ -277,7 +277,7 @@ Auto_beam_engraver::end_beam () beam_settings_ = SCM_EOL; } - shortest_mom_ = Moment (Rational (1, 8)); + shortest_mom_ = Moment (Rational (1, 4)); } void @@ -393,8 +393,7 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info) if (bool (beam_start_location_.grace_part_) != bool (now.grace_part_)) return; - Moment ev_dur = unsmob_duration (ev->get_property ("duration"))->get_length (); - Moment dur = Rational (1, ev_dur.den ()); + Moment dur = unsmob_duration (ev->get_property ("duration"))->get_length (); Moment measure_now = measure_position (context ()); bool recheck_needed = false; @@ -506,7 +505,6 @@ Auto_beam_engraver::process_acknowledged () { Moment measure_now = measure_position (context ()); consider_end (measure_now, shortest_mom_); - consider_begin (measure_now, shortest_mom_); } else if (process_acknowledged_count_ > 1) { @@ -529,23 +527,25 @@ ADD_ACKNOWLEDGER (Auto_beam_engraver, beam); ADD_ACKNOWLEDGER (Auto_beam_engraver, breathing_sign); ADD_ACKNOWLEDGER (Auto_beam_engraver, rest); ADD_TRANSLATOR (Auto_beam_engraver, - /* doc */ - "Generate beams based on measure characteristics and observed" - " Stems. Uses @code{beatLength}, @code{measureLength}, and" - " @code{measurePosition} to decide when to start and stop a" - " beam. Overriding beaming is done through" - " @ref{Stem_engraver} properties @code{stemLeftBeamCount} and" - " @code{stemRightBeamCount}.", - - /* create */ - "Beam ", - - /* read */ - "autoBeaming " - "beamSettings " - "beatLength " - "subdivideBeams ", - - /* write */ - "" - ); + /* doc */ + "Generate beams based on measure characteristics and observed" + " Stems. Uses @code{baseMoment}, @code{beatStructure}," + " @code{beamExceptions}, @code{measureLength}, and" + " @code{measurePosition} to decide when to start and stop a" + " beam. Overriding beaming is done through" + " @ref{Stem_engraver} properties @code{stemLeftBeamCount} and" + " @code{stemRightBeamCount}.", + + /* create */ + "Beam ", + + /* read */ + "autoBeaming " + "baseMoment " + "beamExceptions " + "beatStructure " + "subdivideBeams ", + + /* write */ + "" + ); diff --git a/lily/bar-line.cc b/lily/bar-line.cc index a7f9024783..34e2e16622 100644 --- a/lily/bar-line.cc +++ b/lily/bar-line.cc @@ -21,11 +21,11 @@ #include "all-font-metrics.hh" #include "font-interface.hh" +#include "line-interface.hh" #include "lookup.hh" #include "output-def.hh" #include "paper-column.hh" #include "staff-symbol-referencer.hh" -#include "line-interface.hh" MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_extent, 1) SCM @@ -40,7 +40,7 @@ Bar_line::calc_bar_extent (SCM smob) return ly_interval2scm (Interval ()); Real h = scm_to_double (size); - return ly_interval2scm (Interval (-h/2, h/2)); + return ly_interval2scm (Interval (-h / 2, h / 2)); } Interval @@ -52,6 +52,12 @@ Bar_line::bar_y_extent (Grob *me, Grob *refpoint) return iv; } +bool +Bar_line::non_empty_barline (Grob *me) +{ + return has_interface (me) && !me->extent (me, X_AXIS).is_empty (); +} + MAKE_SCHEME_CALLBACK (Bar_line, print, 1); SCM Bar_line::print (SCM smob) @@ -121,7 +127,7 @@ Bar_line::compound_barline (Grob *me, string str, Real h, if (str == "") { - Stencil empty = Lookup::blank (Box (Interval (0, 0), Interval (-h / 2, h / 2))); + Stencil empty = Lookup::blank (Box (Interval (0, 0), Interval (-h / 2, h / 2))); empty.translate_axis (center, Y_AXIS); return empty; } @@ -171,7 +177,6 @@ Bar_line::compound_barline (Grob *me, string str, Real h, m.add_at_edge (X_AXIS, LEFT, colon, kern); m.add_at_edge (X_AXIS, RIGHT, thin, kern); m.add_at_edge (X_AXIS, RIGHT, colon, kern); - } else if (str == ":|.:") { @@ -196,8 +201,8 @@ Bar_line::compound_barline (Grob *me, string str, Real h, /* should align to other side? this never appears on the system-start? - m.add_at_edge (X_AXIS, RIGHT, thin, 0); - m.add_at_edge (X_AXIS, RIGHT, thin, thinkern); + m.add_at_edge (X_AXIS, RIGHT, thin, 0); + m.add_at_edge (X_AXIS, RIGHT, thin, thinkern); */ m.add_at_edge (X_AXIS, LEFT, thin, thinkern); m.add_at_edge (X_AXIS, RIGHT, thin, thinkern); @@ -211,42 +216,40 @@ Bar_line::compound_barline (Grob *me, string str, Real h, segno.add_stencil (Font_interface::get_default_font (me)->find_by_name ("scripts.varsegno")); if (str == "S") - { - m.add_stencil (segno); - } + m.add_stencil (segno); else if (str == "S|:" || str == ".S|:") - { - m.add_at_edge (X_AXIS, RIGHT, thick, 0); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - m.add_at_edge (X_AXIS, LEFT, segno, thinkern); - } + { + m.add_at_edge (X_AXIS, RIGHT, thick, 0); + m.add_at_edge (X_AXIS, RIGHT, thin, kern); + m.add_at_edge (X_AXIS, RIGHT, colon, kern); + m.add_at_edge (X_AXIS, LEFT, segno, thinkern); + } else if (str == ":|S" || str == ":|S.") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - m.add_at_edge (X_AXIS, RIGHT, segno, thinkern); - } + { + m.add_at_edge (X_AXIS, LEFT, thick, 0); + m.add_at_edge (X_AXIS, LEFT, thin, kern); + m.add_at_edge (X_AXIS, LEFT, colon, kern); + m.add_at_edge (X_AXIS, RIGHT, segno, thinkern); + } else if (str == ":|S|:" || str == ":|S.|:") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - m.add_at_edge (X_AXIS, RIGHT, segno, thinkern); - m.add_at_edge (X_AXIS, RIGHT, thick, thinkern); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - } + { + m.add_at_edge (X_AXIS, LEFT, thick, 0); + m.add_at_edge (X_AXIS, LEFT, thin, kern); + m.add_at_edge (X_AXIS, LEFT, colon, kern); + m.add_at_edge (X_AXIS, RIGHT, segno, thinkern); + m.add_at_edge (X_AXIS, RIGHT, thick, thinkern); + m.add_at_edge (X_AXIS, RIGHT, thin, kern); + m.add_at_edge (X_AXIS, RIGHT, colon, kern); + } else if (str == "|._.|") // :|S|: or :|S.|: without segno and colon - { - // get the width of the segno sign - Real segno_width = segno.extent (X_AXIS).length (); - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, thick, segno_width + 2 * thinkern); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - } + { + // get the width of the segno sign + Real segno_width = segno.extent (X_AXIS).length (); + m.add_at_edge (X_AXIS, LEFT, thick, 0); + m.add_at_edge (X_AXIS, LEFT, thin, kern); + m.add_at_edge (X_AXIS, RIGHT, thick, segno_width + 2 * thinkern); + m.add_at_edge (X_AXIS, RIGHT, thin, kern); + } // end varsegno block } else if (str == ":") @@ -263,13 +266,9 @@ Bar_line::compound_barline (Grob *me, string str, Real h, } } else if (str == "dashed") - { - m = dashed_bar_line (me, h, hair); - } + m = dashed_bar_line (me, h, hair); else if (str == "'") - { - m = tick_bar_line (me, h, rounded); - } + m = tick_bar_line (me, h, rounded); m.translate_axis (center, Y_AXIS); return m; @@ -302,10 +301,9 @@ Bar_line::tick_bar_line (Grob *me, Real h, bool rounded) : 0.0; return Lookup::round_filled_box (Box (Interval (0, line_thick), - Interval (h / 2 - th, h / 2 + th)), blot); + Interval (h / 2 - th, h / 2 + th)), blot); } - MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_size, 1); SCM Bar_line::calc_bar_size (SCM smob) @@ -319,7 +317,6 @@ Bar_line::calc_bar_size (SCM smob) return scm_from_int (0); } - Stencil Bar_line::dashed_bar_line (Grob *me, Real h, Real thick) { @@ -329,25 +326,25 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick) this is a tad complex for what we want to achieve, but with a simple line, the round blotting interferes with staff line connections. - */ + */ Real ss = Staff_symbol_referencer::staff_space (me); int count = Staff_symbol_referencer::line_count (me); - Real line_thick = Staff_symbol_referencer::line_thickness (me); + Real line_thick = Staff_symbol_referencer::line_thickness (me); - if (fabs (line_thick + (count -1) * ss - h) < 0.1) // ugh. + if (fabs (line_thick + (count -1) * ss - h) < 0.1) // ugh. { - Real blot = - me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); + Real blot + = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); - Real half_space = ss/2; + Real half_space = ss / 2; Stencil bar; - for (int i = (count-1); i >= -(count-1); i -= 2) + for (int i = (count - 1); i >= -(count - 1); i -= 2) { Real top_y = min ((i + dash_size) * half_space, - (count-1) * half_space + line_thick / 2); + (count - 1) * half_space + line_thick / 2); Real bot_y = max ((i - dash_size) * half_space, - -(count-1) * half_space - line_thick/2); + -(count - 1) * half_space - line_thick / 2); bar.add_stencil (Lookup::round_filled_box (Box (Interval (0, thick), Interval (bot_y, top_y)), @@ -360,7 +357,7 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick) /* We have to scale the dashing so it starts and ends with half a dash exactly. - */ + */ int dashes = int (rint (h / ss)); Real total_dash_size = h / dashes; Real factor = (dash_size - thick) / ss; @@ -368,7 +365,7 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick) SCM at = scm_list_n (ly_symbol2scm ("dashed-line"), scm_from_double (thick), scm_from_double (factor * total_dash_size), - scm_from_double ((1-factor) * total_dash_size), + scm_from_double ((1 - factor) * total_dash_size), scm_from_double (0), scm_from_double (h), scm_from_double (factor * total_dash_size * 0.5), @@ -379,7 +376,7 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick) box.add_point (Offset (0, h)); Stencil s (box, at); - s.translate (Offset (thick/2, -h/2)); + s.translate (Offset (thick / 2, -h / 2)); return s; } return Stencil (); diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index fd043e89c8..7cbd3168c3 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -62,7 +62,7 @@ protected: Beaming_options beaming_options_; Beaming_options finished_beaming_options_; - + void typeset_beam (); void set_melisma (bool); @@ -167,7 +167,7 @@ Beam_engraver::process_music () if (stop_ev_ && beam_) { announce_end_grob (beam_, stop_ev_->self_scm ()); - + } } @@ -212,7 +212,7 @@ Beam_engraver::stop_translation_timestep () finished_beam_ = beam_; finished_beam_info_ = beam_info_; finished_beaming_options_ = beaming_options_; - + stop_ev_ = 0; beam_ = 0; beam_info_ = 0; @@ -251,7 +251,7 @@ Beam_engraver::acknowledge_stem (Grob_info info) { if (!beam_) return; - + Moment now = now_mom (); if (!valid_start_point ()) return; @@ -259,7 +259,7 @@ Beam_engraver::acknowledge_stem (Grob_info info) Item *stem = dynamic_cast (info.grob ()); if (Stem::get_beam (stem)) return; - + Stream_event *ev = info.ultimate_event_cause (); if (!ev->in_event_class ("rhythmic-event")) { @@ -298,13 +298,14 @@ ADD_TRANSLATOR (Beam_engraver, /* doc */ "Handle @code{Beam} events by engraving beams. If omitted," " then notes are printed with flags instead of beams.", - + /* create */ "Beam ", /* read */ + "baseMoment " "beamMelismaBusy " - "beatLength " + "beatStructure " "subdivideBeams ", /* write */ @@ -317,7 +318,7 @@ public: TRANSLATOR_DECLARATIONS (Grace_beam_engraver); DECLARE_TRANSLATOR_LISTENER (beam); - + protected: virtual bool valid_start_point (); virtual bool valid_end_point (); @@ -365,13 +366,14 @@ ADD_TRANSLATOR (Grace_beam_engraver, "Handle @code{Beam} events by engraving beams. If omitted," " then notes are printed with flags instead of beams. Only" " engraves beams when we are at grace points in time.", - + /* create */ "Beam ", /* read */ + "baseMoment " "beamMelismaBusy " - "beatLength " + "beatStructure " "subdivideBeams ", /* write */ diff --git a/lily/beam-setting-scheme.cc b/lily/beam-setting-scheme.cc deleted file mode 100644 index 550f1e40f2..0000000000 --- a/lily/beam-setting-scheme.cc +++ /dev/null @@ -1,78 +0,0 @@ -/* - This file is part of LilyPond, the GNU music typesetter. - - Copyright (C) 2009--2010 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 - 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 "beam-settings.hh" -#include "context.hh" -#include "guile-compatibility.hh" - -LY_DEFINE (ly_grouping_rules, "ly:grouping-rules", - 3, 0, 0, (SCM settings, SCM time_signature, SCM rule_type), - "Return grouping rules for @var{time-signature} and" - " @var{rule-type} from @var{settings}.") -{ - LY_ASSERT_TYPE (ly_cheap_is_list, settings, 1); - LY_ASSERT_TYPE (scm_is_pair, time_signature, 2); - LY_ASSERT_TYPE (ly_is_symbol, rule_type, 3); - - SCM grouping_rules = SCM_EOL; - if (scm_is_pair (settings)) - grouping_rules = - ly_assoc_get (scm_list_2 (time_signature, rule_type), - settings, - SCM_EOL); - return grouping_rules; -} - -LY_DEFINE (ly_beam_grouping, "ly:beam-grouping", - 4, 0, 0, (SCM settings, SCM time_signature, SCM rule_type, - SCM beam_type), - "Return grouping for beams of @var{beam-type} in" - " @var{time-signature} for" - " @var{rule-type} from @var{settings}.") -{ - LY_ASSERT_TYPE (ly_cheap_is_list, settings, 1); - LY_ASSERT_TYPE (scm_is_pair, time_signature, 2); - LY_ASSERT_TYPE (ly_is_symbol, rule_type, 3); - SCM_ASSERT_TYPE (scm_is_symbol(beam_type) || scm_is_pair(beam_type), - beam_type, SCM_ARG4, __FUNCTION__, "symbol or pair"); - SCM beam_grouping = - ly_assoc_get (beam_type, - ly_grouping_rules (settings,time_signature,rule_type), - SCM_EOL); - return beam_grouping; -} - -LY_DEFINE (ly_beat_grouping, "ly:beat-grouping", - 1, 0, 0, (SCM context), - "Return default beat grouping currently active in @var{context}.") -{ - LY_ASSERT_SMOB (Context, context, 1); - Context *c = unsmob_context (context); - SCM time_signature = - c->get_property ("timeSignatureFraction"); - SCM settings = - c->get_property("beamSettings"); - SCM beat_grouping = - ly_beam_grouping (settings, - time_signature, - ly_symbol2scm ("end"), - ly_symbol2scm ("*")); - return beat_grouping; -} - diff --git a/lily/beaming-pattern.cc b/lily/beaming-pattern.cc index 3659525f11..7567caa700 100644 --- a/lily/beaming-pattern.cc +++ b/lily/beaming-pattern.cc @@ -18,7 +18,6 @@ */ #include "context.hh" -#include "beam-settings.hh" #include "beaming-pattern.hh" /* @@ -174,10 +173,10 @@ Beaming_pattern::find_rhythmic_importance (Beaming_options const &options) if (infos_[i].start_moment_ == measure_pos) infos_[i].rhythmic_importance_ = -2; - // Mark the start of each beat up to the end of this beat group. - for (int beat = 1; beat <= count; beat++) + // Mark the start of each unit up to the end of this beat group. + for (int unit = 1; unit <= count; unit++) { - Moment next_measure_pos = measure_pos + options.beat_length_; + Moment next_measure_pos = measure_pos + options.base_moment_; while (i < infos_.size () && infos_[i].start_moment_ < next_measure_pos) { @@ -190,7 +189,7 @@ Beaming_pattern::find_rhythmic_importance (Beaming_options const &options) // in an 8th-note triplet with a quarter-note beat, 1/3 of a beat should be // more important than 1/2. if (infos_[i].rhythmic_importance_ >= 0) - infos_[i].rhythmic_importance_ = (dt / options.beat_length_).den (); + infos_[i].rhythmic_importance_ = (dt / options.base_moment_).den (); i++; } @@ -293,10 +292,12 @@ Beaming_pattern::split_pattern (int i) void Beaming_options::from_context (Context *context) { - grouping_ = ly_beat_grouping (context->self_scm ()); + grouping_ = context->get_property ("beatStructure"); subdivide_beams_ = to_boolean (context->get_property ("subdivideBeams")); - beat_length_ = robust_scm2moment (context->get_property ("beatLength"), Moment (1, 4)); - measure_length_ = robust_scm2moment (context->get_property ("measureLength"), Moment (4, 4)); + base_moment_ = robust_scm2moment (context->get_property ("baseMoment"), + Moment (1, 4)); + measure_length_ = robust_scm2moment (context->get_property ("measureLength"), + Moment (4, 4)); } Beaming_options::Beaming_options () diff --git a/lily/book.cc b/lily/book.cc index f4dd09362c..efd26d44eb 100644 --- a/lily/book.cc +++ b/lily/book.cc @@ -61,13 +61,13 @@ Book::Book (Book const &s) paper_ = s.paper_->clone (); paper_->unprotect (); } - + input_location_ = make_input (*s.origin ()); - header_ = ly_make_anonymous_module (false); + header_ = ly_make_module (false); if (ly_is_module (s.header_)) ly_module_copy (header_, s.header_); - + SCM *t = &scores_; for (SCM p = s.scores_; scm_is_pair (p); p = scm_cdr (p)) { @@ -112,7 +112,7 @@ Book::mark_smob (SCM s) scm_gc_mark (book->scores_); scm_gc_mark (book->bookparts_); scm_gc_mark (book->input_location_); - + return book->header_; } @@ -141,7 +141,7 @@ Book::set_parent (Book *parent) /* Copy the header block of the parent */ if (ly_is_module (parent->header_)) { - SCM tmp_header = ly_make_anonymous_module (false); + SCM tmp_header = ly_make_module (false); ly_module_copy (tmp_header, parent->header_); if (ly_is_module (header_)) ly_module_copy (tmp_header, header_); @@ -158,7 +158,7 @@ Book::add_scores_to_bookpart () { if (scm_is_pair (scores_)) { - /* If scores have been added to this book, add them to a child + /* If scores have been added to this book, add them to a child * book part */ Book *part = new Book; part->set_parent (this); @@ -185,7 +185,7 @@ Book::error_found () if (Score *score = unsmob_score (scm_car (s))) if (score->error_found_) return true; - + for (SCM part = bookparts_; scm_is_pair (part); part = scm_cdr (part)) if (Book *bookpart = unsmob_book (scm_car (part))) if (bookpart->error_found ()) @@ -228,11 +228,11 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout) { SCM outputs = score ->book_rendering (output_paper_book->paper_, layout); - + while (scm_is_pair (outputs)) { Music_output *output = unsmob_music_output (scm_car (outputs)); - + if (Performance *perf = dynamic_cast (output)) output_paper_book->add_performance (perf->self_scm ()); else if (Paper_score *pscore = dynamic_cast (output)) @@ -241,7 +241,7 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout) output_paper_book->add_score (score->get_header ()); output_paper_book->add_score (pscore->self_scm ()); } - + outputs = scm_cdr (outputs); } } @@ -250,7 +250,7 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout) output_paper_book->add_score (scm_car (s)); else assert (0); - + } /* Concatenate all score or book part outputs into a Paper_book diff --git a/lily/chord-tremolo-engraver.cc b/lily/chord-tremolo-engraver.cc index 141f7313e4..f0ac33d25a 100644 --- a/lily/chord-tremolo-engraver.cc +++ b/lily/chord-tremolo-engraver.cc @@ -54,10 +54,10 @@ class Chord_tremolo_engraver : public Engraver protected: Stream_event *repeat_; - // current direction of beam (first RIGHT, then LEFT) - Direction beam_dir_; - Spanner *beam_; + // Store the pointer to the previous stem, so we can create a beam if + // necessary and end the spanner + Grob *previous_stem_; protected: virtual void finalize (); @@ -70,7 +70,7 @@ Chord_tremolo_engraver::Chord_tremolo_engraver () { beam_ = 0; repeat_ = 0; - beam_dir_ = CENTER; + previous_stem_ = 0; } IMPLEMENT_TRANSLATOR_LISTENER (Chord_tremolo_engraver, tremolo_span); @@ -80,18 +80,15 @@ Chord_tremolo_engraver::listen_tremolo_span (Stream_event *ev) Direction span_dir = to_dir (ev->get_property ("span-direction")); if (span_dir == START) { - if (ASSIGN_EVENT_ONCE (repeat_, ev)) - { - beam_dir_ = RIGHT; - } + ASSIGN_EVENT_ONCE (repeat_, ev); } else if (span_dir == STOP) { if (!repeat_) - ev->origin ()->warning (_ ("No tremolo to end")); + ev->origin ()->warning (_ ("No tremolo to end")); repeat_ = 0; beam_ = 0; - beam_dir_ = CENTER; + previous_stem_ = 0; } } @@ -126,17 +123,26 @@ Chord_tremolo_engraver::acknowledge_stem (Grob_info info) int gap_count = min (flags, intlog2 (repeat_count) + 1); Grob *s = info.grob (); - Stem::set_beaming (s, flags, beam_dir_); + if (previous_stem_) + { + // FIXME: We know that the beam has ended only in listen_tremolo_span + // but then it is too late for Spanner_break_forbid_engraver + // to allow a line break... So, as a nasty hack, announce the + // spanner's end after each note except the first. The only + // "drawback" is that for multi-note tremolos a break would + // theoretically be allowed after the second note (but since + // that note is typically not at a barline, I don't think + // anyone will ever notice!) + announce_end_grob (beam_, previous_stem_->self_scm ()); + // Create the whole beam between previous and current note + Stem::set_beaming (previous_stem_, flags, RIGHT); + Stem::set_beaming (s, flags, LEFT); + } if (Stem::duration_log (s) != 1) - beam_->set_property ("gap-count", scm_from_int (gap_count)); + beam_->set_property ("gap-count", scm_from_int (gap_count)); + - if (beam_dir_ == RIGHT) - { - beam_dir_ = LEFT; - announce_end_grob (beam_, s->self_scm ()); - } - if (info.ultimate_event_cause ()->in_event_class ("rhythmic-event")) Beam::add_stem (beam_, s); else @@ -147,6 +153,9 @@ Chord_tremolo_engraver::acknowledge_stem (Grob_info info) else ::warning (s); } + // Store current grob, so we can possibly end the spanner here (and + // reset the beam direction to RIGHT) + previous_stem_ = s; } } diff --git a/lily/chord-tremolo-iterator.cc b/lily/chord-tremolo-iterator.cc index e6c4dd604a..4a64221fa9 100644 --- a/lily/chord-tremolo-iterator.cc +++ b/lily/chord-tremolo-iterator.cc @@ -40,11 +40,6 @@ Chord_tremolo_iterator::get_music_list () const int elt_count = body_is_sequential ? scm_ilength (body->get_property ("elements")) : 1; - if (body_is_sequential && - (elt_count != 2 - && elt_count != 1)) - mus->origin ()->warning (_f ("expect 2 elements for chord tremolo, found %d", elt_count)); - if (elt_count <= 0) elt_count = 1; @@ -57,7 +52,7 @@ Chord_tremolo_iterator::get_music_list () const return scm_list_2 (ev->unprotect (), body->self_scm ()); } else - { + { SCM tremolo_symbol = ly_symbol2scm ("TremoloSpanEvent"); SCM start_event_scm = scm_call_2 (ly_lily_module_constant ("make-span-event"), tremolo_symbol, scm_from_int (START)); unsmob_music (start_event_scm)->set_spot (*origin); diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc index 8e08d1fc87..0779c133a1 100644 --- a/lily/constrained-breaking.cc +++ b/lily/constrained-breaking.cc @@ -383,30 +383,51 @@ Constrained_breaking::initialize () /* NOTE: currently, we aren't using the space_ field of a Line_details for anything. That's because the approximations used for scoring a page configuration don't actually space things - properly (for speed reasong) using springs anchored at the staff + properly (for speed reasons) using springs anchored at the staff refpoints. Rather, the "space" is placed between the extent boxes. To get a good result, therefore, the "space" value for page breaking needs to be much smaller than the "space" value for - page layout. Currently, we just make it zero always. + page layout. Currently, we just make it zero always, which means + that we will always prefer a tighter vertical layout. */ between_system_space_ = 0; between_system_padding_ = 0; + between_system_min_distance_ = 0; + between_scores_system_padding_ = 0; + between_scores_system_min_distance_ = 0; before_title_padding_ = 0; + before_title_min_distance_ = 0; Output_def *l = pscore_->layout (); SCM spacing_spec = l->c_variable ("between-system-spacing"); + SCM between_scores_spec = l->c_variable ("between-scores-system-spacing"); SCM title_spec = l->c_variable ("before-title-spacing"); SCM page_breaking_spacing_spec = l->c_variable ("page-breaking-between-system-spacing"); Page_layout_problem::read_spacing_spec (spacing_spec, &between_system_padding_, ly_symbol2scm ("padding")); + Page_layout_problem::read_spacing_spec (between_scores_spec, + &between_scores_system_padding_, + ly_symbol2scm ("padding")); Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec, &between_system_padding_, ly_symbol2scm ("padding")); Page_layout_problem::read_spacing_spec (title_spec, &before_title_padding_, ly_symbol2scm ("padding")); + Page_layout_problem::read_spacing_spec (between_scores_spec, + &between_scores_system_min_distance_, + ly_symbol2scm ("minimum-distance")); + Page_layout_problem::read_spacing_spec (spacing_spec, + &between_system_min_distance_, + ly_symbol2scm ("minimum-distance")); + Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec, + &between_system_min_distance_, + ly_symbol2scm ("minimum-distance")); + Page_layout_problem::read_spacing_spec (title_spec, + &before_title_min_distance_, + ly_symbol2scm ("minimum-distance")); Interval first_line = line_dimensions_int (pscore_->layout (), 0); Interval other_lines = line_dimensions_int (pscore_->layout (), 1); @@ -460,6 +481,7 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v System *sys = pscore_->root_system (); Interval begin_of_line_extent = sys->begin_of_line_pure_height (start_rank, end_rank); Interval rest_of_line_extent = sys->rest_of_line_pure_height (start_rank, end_rank); + bool last = (end == breaks_.size () - 1); Grob *c = all_[breaks_[end]]; out->last_column_ = c; @@ -486,8 +508,10 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v || isnan (rest_of_line_extent[RIGHT])) ? Interval (0, 0) : rest_of_line_extent; out->shape_ = Line_shape (begin_of_line_extent, rest_of_line_extent); - out->padding_ = between_system_padding_; + out->padding_ = last ? between_scores_system_padding_ : between_system_padding_; out->title_padding_ = before_title_padding_; + out->min_distance_ = last ? between_scores_system_min_distance_ : between_system_min_distance_; + out->title_min_distance_ = before_title_min_distance_; out->space_ = between_system_space_; out->inverse_hooke_ = out->full_height () + between_system_space_; } @@ -509,6 +533,8 @@ Line_details::Line_details (Prob *pb, Output_def *paper) title_padding_ = 0; Page_layout_problem::read_spacing_spec (spec, &padding_, ly_symbol2scm ("padding")); Page_layout_problem::read_spacing_spec (title_spec, &title_padding_, ly_symbol2scm ("padding")); + Page_layout_problem::read_spacing_spec (spec, &min_distance_, ly_symbol2scm ("minimum-distance")); + Page_layout_problem::read_spacing_spec (title_spec, &title_min_distance_, ly_symbol2scm ("minimum-distance")); last_column_ = 0; force_ = 0; @@ -532,6 +558,7 @@ Line_details::Line_details (Prob *pb, Output_def *paper) SCM first_scm = pb->get_property ("first-markup-line"); first_markup_line_ = to_boolean (first_scm); tight_spacing_ = to_boolean (pb->get_property ("tight-spacing")); + first_refpoint_offset_ = 0; } Real diff --git a/lily/includable-lexer.cc b/lily/includable-lexer.cc index 2ddfdd38c0..8c78481316 100644 --- a/lily/includable-lexer.cc +++ b/lily/includable-lexer.cc @@ -121,6 +121,12 @@ Includable_lexer::new_input (string name, string data, Sources *sources) yy_switch_to_buffer (yy_create_buffer (file->get_istream (), YY_BUF_SIZE)); } +void +Includable_lexer::add_string_include (string data) +{ + pending_string_includes_.push_back (data); +} + /** pop the inputstack. conceptually this is a destructor, but it does not destruct the Source_file that Includable_lexer::new_input creates. */ diff --git a/lily/include/bar-line.hh b/lily/include/bar-line.hh index a9b3ed90da..aeea3565a0 100644 --- a/lily/include/bar-line.hh +++ b/lily/include/bar-line.hh @@ -17,8 +17,8 @@ along with LilyPond. If not, see . */ -#ifndef BAR_HH -#define BAR_HH +#ifndef BAR_LINE_HH +#define BAR_LINE_HH #include "lily-proto.hh" #include "grob-interface.hh" @@ -33,10 +33,11 @@ public: static Stencil compound_barline (Grob *, string, Real height, bool rounded); static Stencil simple_barline (Grob *, Real wid, Real height, bool rounded); static Interval bar_y_extent (Grob *, Grob *); + static bool non_empty_barline (Grob *me); + DECLARE_SCHEME_CALLBACK (calc_bar_extent, (SCM)); DECLARE_SCHEME_CALLBACK (calc_bar_size, (SCM)); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_anchor, (SCM)); }; -#endif // BAR_HH - +#endif // BAR_LINE_HH diff --git a/lily/include/beam-settings.hh b/lily/include/beam-settings.hh deleted file mode 100644 index 9c9e3cabf3..0000000000 --- a/lily/include/beam-settings.hh +++ /dev/null @@ -1,29 +0,0 @@ -/* - This file is part of LilyPond, the GNU music typesetter. - - Copyright (C) 2009--2010 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 - 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 BEAM_SETTINGS_HH -#define BEAM_SETTINGS_HH - -#include "lily-guile.hh" - -SCM ly_grouping_rules (SCM settings, SCM time_sig, SCM rule_type); -SCM ly_beam_grouping (SCM settings, SCM time_sig, SCM rule_type, - SCM beam_type); -SCM ly_beat_grouping (SCM context); -#endif // BEAM_SETTINGS_HH diff --git a/lily/include/beaming-pattern.hh b/lily/include/beaming-pattern.hh index 7fb07fc947..a9bb44ae9f 100644 --- a/lily/include/beaming-pattern.hh +++ b/lily/include/beaming-pattern.hh @@ -28,7 +28,7 @@ struct Beaming_options { SCM grouping_; bool subdivide_beams_; - Moment beat_length_; + Moment base_moment_; Moment measure_length_; Beaming_options (); diff --git a/lily/include/constrained-breaking.hh b/lily/include/constrained-breaking.hh index fbe12eb05b..c461859f7c 100644 --- a/lily/include/constrained-breaking.hh +++ b/lily/include/constrained-breaking.hh @@ -49,6 +49,8 @@ struct Line_details { Real padding_; /* compulsory space after this system (if we're not last on a page) */ Real title_padding_; + Real min_distance_; + Real title_min_distance_; Real bottom_padding_; Real space_; /* spring length */ Real inverse_hooke_; @@ -72,6 +74,7 @@ struct Line_details { bool last_markup_line_; bool first_markup_line_; bool tight_spacing_; + Real first_refpoint_offset_; Line_details () { @@ -80,6 +83,8 @@ struct Line_details { padding_ = 0; title_padding_ = 0; bottom_padding_ = 0; + min_distance_ = 0; + title_min_distance_ = 0; space_ = 0; inverse_hooke_ = 1; tight_spacing_ = false; @@ -95,6 +100,7 @@ struct Line_details { last_markup_line_ = false; first_markup_line_ = false; tallness_ = 0; + first_refpoint_offset_ = 0; } Line_details (Prob *pb, Output_def *paper); @@ -150,9 +156,14 @@ private: vsize systems_; bool ragged_right_; bool ragged_last_; + + Real between_system_min_distance_; + Real between_system_padding_; Real between_system_space_; + Real between_scores_system_min_distance_; + Real between_scores_system_padding_; + Real before_title_min_distance_; Real before_title_padding_; - Real between_system_padding_; /* the (i,j)th entry is the configuration for breaking between columns i and j */ diff --git a/lily/include/includable-lexer.hh b/lily/include/includable-lexer.hh index 9df81461db..cad1e45d71 100644 --- a/lily/include/includable-lexer.hh +++ b/lily/include/includable-lexer.hh @@ -42,6 +42,7 @@ protected: bool close_input (); vector include_stack_; vector char_count_stack_; + vector pending_string_includes_; public: @@ -56,6 +57,7 @@ public: virtual void new_input (string s, Sources *); void new_input (string name, string data, Sources *); + void add_string_include (string data); char const *here_str0 () const; }; diff --git a/lily/include/lily-parser.hh b/lily/include/lily-parser.hh index a3f5667b74..2961ffbb90 100644 --- a/lily/include/lily-parser.hh +++ b/lily/include/lily-parser.hh @@ -63,6 +63,7 @@ public: void clear (); void do_init_file (); void do_yyparse (); + void include_string (string ly_code); void parse_file (string init, string name, string out_name); void parse_string (string ly_code); void parser_error (string); diff --git a/lily/include/ly-module.hh b/lily/include/ly-module.hh index 0a7fdc8726..89fbbefa80 100644 --- a/lily/include/ly-module.hh +++ b/lily/include/ly-module.hh @@ -22,7 +22,7 @@ #include "config.hh" #include "lily-guile.hh" -SCM ly_make_anonymous_module (bool safe); +SCM ly_make_module (bool safe); SCM ly_module_copy (SCM dest, SCM src); SCM ly_module_2_alist (SCM mod); SCM ly_module_lookup (SCM module, SCM sym); @@ -30,8 +30,7 @@ SCM ly_modules_lookup (SCM modules, SCM sym, SCM); SCM ly_module_symbols (SCM mod); void ly_reexport_module (SCM mod); inline bool ly_is_module (SCM x) { return SCM_MODULEP (x); } -SCM ly_clear_anonymous_modules (); -void clear_anonymous_modules (); + SCM ly_use_module (SCM mod, SCM used); /* For backward compatability with Guile 1.8 */ @@ -40,7 +39,6 @@ typedef SCM (*scm_t_hash_fold_fn) (GUILE_ELLIPSIS); typedef SCM (*scm_t_hash_handle_fn) (GUILE_ELLIPSIS); #endif -#define MODULE_GC_KLUDGE #endif /* LY_MODULE_HH */ diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh index 05da0624c5..579293d2a4 100644 --- a/lily/include/note-head.hh +++ b/lily/include/note-head.hh @@ -31,6 +31,7 @@ public: DECLARE_SCHEME_CALLBACK (brew_ez_stencil, (SCM)); DECLARE_SCHEME_CALLBACK (stem_x_shift, (SCM)); DECLARE_SCHEME_CALLBACK (calc_stem_attachment, (SCM)); + DECLARE_SCHEME_CALLBACK (include_ledger_line_height, (SCM)); DECLARE_GROB_INTERFACE(); static Real stem_attachment_coordinate (Grob *, Axis a); diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh index e58ece9f22..e97533ed1d 100644 --- a/lily/include/paper-column.hh +++ b/lily/include/paper-column.hh @@ -58,8 +58,7 @@ public: static bool is_breakable (Grob *); static bool is_extraneous_column_from_ligature (Grob *); static Real minimum_distance (Grob *l, Grob *r); - static Interval break_align_width (Grob *me); + static Interval break_align_width (Grob *me, SCM align_sym); }; #endif // PAPER_COLUMN_HH - diff --git a/lily/include/staff-symbol.hh b/lily/include/staff-symbol.hh index d669038dc8..e7b87e799a 100644 --- a/lily/include/staff-symbol.hh +++ b/lily/include/staff-symbol.hh @@ -36,6 +36,7 @@ public: static int get_steps (Grob *); static int line_count (Grob *); static bool on_line (Grob *me, int pos); + static Interval line_span (Grob *); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (height, (SCM)); DECLARE_GROB_INTERFACE(); diff --git a/lily/lexer.ll b/lily/lexer.ll index aaa95d7980..5f4aa8ef62 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -51,6 +51,7 @@ using namespace std; #include "interval.hh" #include "lily-guile.hh" #include "lily-lexer.hh" +#include "lily-parser.hh" #include "lilypond-version.hh" #include "main.hh" #include "music.hh" @@ -366,6 +367,11 @@ BOM_UTF8 \357\273\277 yylval.scm = unpack_identifier(sval); return identifier_type (yylval.scm); } + + for (size_t i = 0; i < pending_string_includes_.size (); i++) + new_input ("", pending_string_includes_[i], + parser_->sources_); + pending_string_includes_.clear (); yylval.scm = sval; return SCM_TOKEN; diff --git a/lily/lily-lexer.cc b/lily/lily-lexer.cc index d3673f2cdf..5a34d60bbe 100644 --- a/lily/lily-lexer.cc +++ b/lily/lily-lexer.cc @@ -109,7 +109,7 @@ Lily_lexer::Lily_lexer (Sources *sources, Lily_parser *parser) chord_repetition_ = Chord_repetition (); smobify_self (); - add_scope (ly_make_anonymous_module (false)); + add_scope (ly_make_module (false)); push_note_state (scm_c_make_hash_table (0)); chordmodifier_tab_ = scm_make_vector (scm_from_int (1), SCM_EOL); } @@ -136,7 +136,7 @@ Lily_lexer::Lily_lexer (Lily_lexer const &src, Lily_parser *parser) SCM *tail = &scopes; for (SCM s = src.scopes_; scm_is_pair (s); s = scm_cdr (s)) { - SCM newmod = ly_make_anonymous_module (false); + SCM newmod = ly_make_module (false); ly_module_copy (newmod, scm_car (s)); *tail = scm_cons (newmod, SCM_EOL); tail = SCM_CDRLOC (*tail); diff --git a/lily/lily-parser-scheme.cc b/lily/lily-parser-scheme.cc index a608111dca..2b968b46c0 100644 --- a/lily/lily-parser-scheme.cc +++ b/lily/lily-parser-scheme.cc @@ -205,6 +205,20 @@ LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string", return SCM_UNSPECIFIED; } +LY_DEFINE (ly_parser_include_string, "ly:parser-include-string", + 2, 0, 0, (SCM parser_smob, SCM ly_code), + "Include the string @var{ly-code} into the input stream" + " for @var{parser-smob}.") +{ + LY_ASSERT_SMOB (Lily_parser, parser_smob, 1); + Lily_parser *parser = unsmob_lily_parser (parser_smob); + LY_ASSERT_TYPE (scm_is_string, ly_code, 2); + + parser->include_string (ly_scm2string (ly_code)); + + return SCM_UNSPECIFIED; +} + LY_DEFINE (ly_parser_set_note_names, "ly:parser-set-note-names", 2, 0, 0, (SCM parser, SCM names), "Replace current note names in @var{parser}." diff --git a/lily/lily-parser.cc b/lily/lily-parser.cc index 6d3e13072a..e0722fd980 100644 --- a/lily/lily-parser.cc +++ b/lily/lily-parser.cc @@ -64,7 +64,7 @@ Lily_parser::Lily_parser (Lily_parser const &src) { lexer_ = new Lily_lexer (*src.lexer_, this); } - + lexer_->unprotect (); } @@ -97,7 +97,7 @@ Lily_parser::print_smob (SCM s, SCM port, scm_print_state*) void Lily_parser::parse_file (string init, string name, string out_name) { - // TODO: use $parser + // TODO: use $parser lexer_->set_identifier (ly_symbol2scm ("parser"), self_scm ()); output_basename_ = out_name; @@ -142,12 +142,12 @@ Lily_parser::parse_file (string init, string name, string out_name) void Lily_parser::parse_string (string ly_code) { - // TODO: use $parser + // TODO: use $parser lexer_->set_identifier (ly_symbol2scm ("parser"), self_scm ()); lexer_->main_input_name_ = ""; - lexer_->is_main_input_ = true; + lexer_->is_main_input_ = true; lexer_->new_input (lexer_->main_input_name_, ly_code, sources_); SCM mod = lexer_->set_current_scope (); @@ -164,6 +164,12 @@ Lily_parser::parse_string (string ly_code) error_level_ = error_level_ | lexer_->error_level_; } +void +Lily_parser::include_string (string ly_code) +{ + lexer_->add_string_include (ly_code); +} + void Lily_parser::clear () { @@ -173,7 +179,7 @@ Lily_parser::clear () lexer_->remove_scope (); } - lexer_ = 0; + lexer_ = 0; } char const * @@ -204,7 +210,7 @@ IMPLEMENT_DEFAULT_EQUAL_P (Lily_parser); /**************************************************************** - OUTPUT-DEF + OUTPUT-DEF ****************************************************************/ Output_def * @@ -214,7 +220,7 @@ get_layout (Lily_parser *parser) Output_def *layout = unsmob_output_def (id); layout = layout ? layout->clone () : new Output_def; layout->set_variable (ly_symbol2scm ("is-layout"), SCM_BOOL_T); - + return layout; } @@ -288,13 +294,13 @@ get_header (Lily_parser *parser) ly_module_copy (nid, id); id = nid; } - + return id; } -SCM +SCM Lily_parser::make_scope () const { - SCM module = ly_make_anonymous_module (be_safe_global); - return module; + SCM module = ly_make_module (be_safe_global); + return module; } diff --git a/lily/ly-module.cc b/lily/ly-module.cc index 7a64410364..42ff2f8b06 100644 --- a/lily/ly-module.cc +++ b/lily/ly-module.cc @@ -23,36 +23,9 @@ #include "std-string.hh" #include "protected-scm.hh" -#ifdef MODULE_GC_KLUDGE -Protected_scm anonymous_modules = SCM_EOL; -bool perform_gc_kludge; -#endif - -void -clear_anonymous_modules () -{ -#ifdef MODULE_GC_KLUDGE - for (SCM s = anonymous_modules; - scm_is_pair (s); - s = scm_cdr (s)) - { - SCM module = scm_car (s); - SCM closure = SCM_MODULE_EVAL_CLOSURE (module); - SCM prop = scm_procedure_property (closure, ly_symbol2scm ("module")); - - if (ly_is_module (prop)) - { - scm_set_procedure_property_x (closure, ly_symbol2scm ("module"), - SCM_BOOL_F); - } - } - - anonymous_modules = SCM_EOL; -#endif -} SCM -ly_make_anonymous_module (bool safe) +ly_make_module (bool safe) { SCM mod = SCM_EOL; if (!safe) @@ -74,10 +47,6 @@ ly_make_anonymous_module (bool safe) mod = scm_call_0 (proc); } -#ifdef MODULE_GC_KLUDGE - if (perform_gc_kludge) - anonymous_modules = scm_cons (mod, anonymous_modules); -#endif return mod; } diff --git a/lily/measure-grouping-engraver.cc b/lily/measure-grouping-engraver.cc index c61dd74c45..91e9f6957d 100644 --- a/lily/measure-grouping-engraver.cc +++ b/lily/measure-grouping-engraver.cc @@ -22,7 +22,6 @@ #include "global-context.hh" #include "engraver.hh" #include "spanner.hh" -#include "beam-settings.hh" #include "translator.icc" @@ -73,27 +72,18 @@ Measure_grouping_engraver::process_music () if (now.grace_part_) return; - SCM settings = get_property ("beamSettings"); - SCM grouping = SCM_EOL; - if (scm_is_pair (settings)) - { - SCM time_signature_fraction = get_property ("timeSignatureFraction"); - grouping = ly_beam_grouping (settings, - time_signature_fraction, - ly_symbol2scm ("end"), - ly_symbol2scm ("*")); - } + SCM grouping = get_property ("beatStructure"); if (scm_is_pair (grouping)) { Moment *measpos = unsmob_moment (get_property ("measurePosition")); Rational mp = measpos->main_part_; - Moment *beatlen_mom = unsmob_moment (get_property ("beatLength")); - Rational beat_length = beatlen_mom->main_part_; + Moment *base_mom = unsmob_moment (get_property ("baseMoment")); + Rational base_moment = base_mom->main_part_; Rational where (0); for (SCM s = grouping; scm_is_pair (s); - where += Rational ((int) scm_to_int (scm_car (s))) * beat_length, + where += Rational ((int) scm_to_int (scm_car (s))) * base_moment, s = scm_cdr (s)) { int grouplen = scm_to_int (scm_car (s)); @@ -109,7 +99,7 @@ Measure_grouping_engraver::process_music () grouping_ = make_spanner ("MeasureGrouping", SCM_EOL); grouping_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn"))); - stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * beat_length; + stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * base_moment; get_global_context ()->add_moment_to_process (Moment (stop_grouping_mom_)); if (grouplen == 3) @@ -138,10 +128,10 @@ ADD_TRANSLATOR (Measure_grouping_engraver, "MeasureGrouping ", /* read */ - "beatLength " + "baseMoment " + "beatStructure " "currentMusicalColumn " - "measurePosition " - "beamSettings ", + "measurePosition ", /* write */ "" diff --git a/lily/module-scheme.cc b/lily/module-scheme.cc index b58bf15ffb..72a32e4801 100644 --- a/lily/module-scheme.cc +++ b/lily/module-scheme.cc @@ -53,17 +53,6 @@ LY_DEFINE (ly_module_copy, "ly:module-copy", return SCM_UNSPECIFIED; } -LY_DEFINE (ly_clear_anonymous_modules, "ly:clear-anonymous-modules", - 0, 0, 0, (), - "Plug a GUILE 1.6 and 1.7 memory leak by breaking a weak" - " reference pointer cycle explicitly.") -{ -#ifdef MODULE_GC_KLUDGE - clear_anonymous_modules (); -#endif - - return SCM_UNSPECIFIED; -} /* Lookup SYM, but don't give error when it is not defined. */ SCM diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index a36d7c01ed..c1268f8572 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -19,34 +19,38 @@ #include "multi-measure-rest.hh" -#include "warn.hh" +#include "font-interface.hh" +#include "lookup.hh" +#include "misc.hh" #include "output-def.hh" #include "paper-column.hh" // urg -#include "font-interface.hh" +#include "percent-repeat-item.hh" #include "rest.hh" -#include "misc.hh" +#include "separation-item.hh" #include "spanner.hh" #include "staff-symbol-referencer.hh" #include "system.hh" #include "text-interface.hh" -#include "percent-repeat-item.hh" -#include "lookup.hh" -#include "separation-item.hh" +#include "warn.hh" Interval Multi_measure_rest::bar_width (Spanner *me) { + SCM spacing_pair = me->get_property ("spacing-pair"); Interval iv; Direction d = LEFT; do { Item *col = me->get_bound (d)->get_column (); - - Interval coldim = Paper_column::break_align_width (col); + SCM align_sym + = (scm_is_pair (spacing_pair) + ? index_get_cell (spacing_pair, d) + : ly_symbol2scm ("staff-bar")); + Interval coldim = Paper_column::break_align_width (col, align_sym); iv[d] = coldim[-d]; } - while ((flip (&d)) != LEFT); + while (flip (&d) != LEFT); return iv; } @@ -291,7 +295,7 @@ Multi_measure_rest::calculate_spacing_rods (Grob *me, Real length) if (! (sp->get_bound (LEFT) && sp->get_bound (RIGHT))) { programming_error ("Multi_measure_rest::get_rods (): I am not spanned!"); - return ; + return; } Item *li = sp->get_bound (LEFT)->get_column (); @@ -334,9 +338,9 @@ Multi_measure_rest::set_spacing_rods (SCM smob) Real sym_width = symbol_stencil (me, 0.0).extent (X_AXIS).length (); calculate_spacing_rods (me, sym_width); - return SCM_UNSPECIFIED; + return SCM_UNSPECIFIED; } - + MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_text_rods, 1); SCM Multi_measure_rest::set_text_rods (SCM smob) @@ -357,12 +361,12 @@ ADD_INTERFACE (Multi_measure_rest, "A rest that spans a whole number of measures.", /* properties */ + "bound-padding " "expand-limit " - "measure-count " "hair-thickness " + "measure-count " + "minimum-length " + "spacing-pair " "thick-thickness " "use-breve-rest " - "bound-padding " - "minimum-length " ); - diff --git a/lily/note-head.cc b/lily/note-head.cc index c63622bbc8..18ac2fd43e 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -27,9 +27,11 @@ using namespace std; #include "directional-element-interface.hh" #include "font-interface.hh" +#include "grob.hh" #include "international.hh" +#include "staff-symbol.hh" +#include "staff-symbol-referencer.hh" #include "warn.hh" -#include "grob.hh" static Stencil internal_print (Grob *me, string *font_char) @@ -106,6 +108,31 @@ Note_head::print (SCM smob) return internal_print (me, &idx).smobbed_copy (); } +MAKE_SCHEME_CALLBACK (Note_head, include_ledger_line_height, 1); +SCM +Note_head::include_ledger_line_height (SCM smob) +{ + Grob *me = unsmob_grob (smob); + Grob *staff = Staff_symbol_referencer::get_staff_symbol (me); + + if (staff) + { + Real ss = Staff_symbol::staff_space (staff); + Interval lines = Staff_symbol::line_span (staff) * (ss / 2.0); + Real my_pos = Staff_symbol_referencer::get_position (me) * ss / 2.0; + Interval my_ext = me->extent (me, Y_AXIS) + my_pos; + + // The +1 and -1 come from the fact that we only want to add + // the interval between the note and the first ledger line, not + // the whole interval between the note and the staff. + Interval iv (min (0.0, lines[UP] - my_ext[DOWN] + 1), + max (0.0, lines[DOWN] - my_ext[UP] - 1)); + return ly_interval2scm (iv); + } + + return ly_interval2scm (Interval (0, 0)); +} + Real Note_head::stem_attachment_coordinate (Grob *me, Axis a) { diff --git a/lily/note-spacing.cc b/lily/note-spacing.cc index e12c1cd91e..076d34648d 100644 --- a/lily/note-spacing.cc +++ b/lily/note-spacing.cc @@ -19,26 +19,20 @@ #include "note-spacing.hh" +#include "accidental-placement.hh" #include "bar-line.hh" #include "directional-element-interface.hh" #include "grob-array.hh" -#include "paper-column.hh" #include "moment.hh" #include "note-column.hh" -#include "warn.hh" -#include "stem.hh" +#include "output-def.hh" +#include "paper-column.hh" +#include "pointer-group-interface.hh" #include "separation-item.hh" #include "spacing-interface.hh" #include "staff-spacing.hh" -#include "accidental-placement.hh" -#include "output-def.hh" -#include "pointer-group-interface.hh" - -static bool -non_empty_barline (Grob *me) -{ - return Bar_line::has_interface (me) && !me->extent (me, X_AXIS).is_empty (); -} +#include "stem.hh" +#include "warn.hh" /* TODO: detect hshifts due to collisions, and account for them in @@ -49,29 +43,29 @@ Spring Note_spacing::get_spacing (Grob *me, Item *right_col, Real base_space, Real increment) { - vector note_columns = Spacing_interface::left_note_columns (me); + vector note_columns = Spacing_interface::left_note_columns (me); Real left_head_end = 0; for (vsize i = 0; i < note_columns.size (); i++) { - SCM r = note_columns[i]->get_object ("rest"); - Grob *g = unsmob_grob (r); - Grob *col = note_columns[i]->get_column (); - - if (!g) - g = Note_column::first_head (note_columns[i]); - - /* - Ugh. If Stem is switched off, we don't know what the - first note head will be. - */ - if (g) - { - if (g->common_refpoint (col, X_AXIS) != col) - programming_error ("Note_spacing::get_spacing (): Common refpoint incorrect"); - else - left_head_end = g->extent (col, X_AXIS)[RIGHT]; - } + SCM r = note_columns[i]->get_object ("rest"); + Grob *g = unsmob_grob (r); + Grob *col = note_columns[i]->get_column (); + + if (!g) + g = Note_column::first_head (note_columns[i]); + + /* + Ugh. If Stem is switched off, we don't know what the + first note head will be. + */ + if (g) + { + if (g->common_refpoint (col, X_AXIS) != col) + programming_error ("Note_spacing::get_spacing (): Common refpoint incorrect"); + else + left_head_end = g->extent (col, X_AXIS)[RIGHT]; + } } /* @@ -97,7 +91,7 @@ Note_spacing::get_spacing (Grob *me, Item *right_col, { Grob *bar = Pointer_group_interface::find_grob (right_col, ly_symbol2scm ("elements"), - non_empty_barline); + Bar_line::non_empty_barline); if (bar) { @@ -125,7 +119,7 @@ knee_correction (Grob *note_spacing, Grob *right_stem, Real increment) { Real note_head_width = increment; Grob *head = right_stem ? Stem::support_head (right_stem) : 0; - Grob *rcolumn = dynamic_cast (head)->get_column (); + Grob *rcolumn = dynamic_cast (head)->get_column (); Interval head_extent; if (head) @@ -170,44 +164,43 @@ same_direction_correction (Grob *note_spacing, Drul_array head_posns) { /* Correct for the following situation: - + X X | | | | | X | | | | ======== - + ^ move the center one to the left. - - + + this effect seems to be much more subtle than the stem-direction stuff (why?), and also does not scale with the difference in stem length. - + */ Interval hp = head_posns[LEFT]; hp.intersect (head_posns[RIGHT]); if (!hp.is_empty ()) return 0; - + Direction lowest = (head_posns[LEFT][DOWN] > head_posns[RIGHT][UP]) ? RIGHT : LEFT; - + Real delta = head_posns[-lowest][DOWN] - head_posns[lowest][UP]; Real corr = robust_scm2double (note_spacing->get_property ("same-direction-correction"), 0); - + return (delta > 1) ? -lowest * corr : 0; } - /* - Correct for optical illusions. See [Wanske] p. 138. The combination - up-stem + down-stem should get extra space, the combination - down-stem + up-stem less. + Correct for optical illusions. See [Wanske] p. 138. The combination + up-stem + down-stem should get extra space, the combination + down-stem + up-stem less. - TODO: have to check whether the stems are in the same staff. + TODO: have to check whether the stems are in the same staff. */ void Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, @@ -235,12 +228,12 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, Grob *bar = Spacing_interface::extremal_break_aligned_grob (me, RIGHT, rcolumn->break_status_dir (), &bar_xextent); - if (bar && dynamic_cast (bar)->get_column () == rcolumn) + if (bar && dynamic_cast (bar)->get_column () == rcolumn) bar_yextent = Staff_spacing::bar_y_positions (bar); do { - vector const &items (ly_scm2link_array (props [d])); + vector const &items (ly_scm2link_array (props [d])); for (vsize i = 0; i < items.size (); i++) { Item *it = dynamic_cast (items[i]); @@ -252,8 +245,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, /* Find accidentals which are sticking out of the right side. */ - if (d == RIGHT) - acc_right = acc_right || Note_column::accidentals (it); + if (d == RIGHT) + acc_right = acc_right || Note_column::accidentals (it); Grob *stem = Note_column::get_stem (it); @@ -286,8 +279,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, can't look at stem-end-position, since that triggers beam slope computations. */ - Real stem_end = hp[stem_dir] + - stem_dir * robust_scm2double (stem->get_property ("length"), 7); + Real stem_end = hp[stem_dir] + + stem_dir * robust_scm2double (stem->get_property ("length"), 7); stem_posns[d] = Interval (min (chord_start, stem_end), max (chord_start, stem_end)); diff --git a/lily/output-def.cc b/lily/output-def.cc index 252bcd2f19..1d94cba652 100644 --- a/lily/output-def.cc +++ b/lily/output-def.cc @@ -42,7 +42,7 @@ Output_def::Output_def () smobify_self (); - scope_ = ly_make_anonymous_module (false); + scope_ = ly_make_module (false); } Output_def::Output_def (Output_def const &s) @@ -52,7 +52,7 @@ Output_def::Output_def (Output_def const &s) smobify_self (); input_origin_ = s.input_origin_; - scope_ = ly_make_anonymous_module (false); + scope_ = ly_make_module (false); if (ly_is_module (s.scope_)) ly_module_copy (scope_, s.scope_); } diff --git a/lily/page-breaking.cc b/lily/page-breaking.cc index 83ffd90fd5..aeeb7bb1b7 100644 --- a/lily/page-breaking.cc +++ b/lily/page-breaking.cc @@ -100,17 +100,17 @@ compress_lines (const vector &orig) Line_details const &old = ret.back (); Line_details compressed = orig[i]; /* - "padding" is the padding below the current line. The padding below - "old" (taking into account whether "old" is a title) is already - accounted for in the extent of the compressed line. The padding - below the compressed line, therefore, should depend on whether its - bottom-most line is a title or not. + We must account for the padding between the lines that we are compressing. + The padding values come from "old," which is the upper system here. Note + the meaning of tight-spacing: if a system has tight-spacing, then the padding + _before_ it is ignored. */ Real padding = 0; if (!orig[i].tight_spacing_) padding = orig[i].title_ ? old.title_padding_ : old.padding_; compressed.shape_ = old.shape_.piggyback (orig[i].shape_, padding); + compressed.first_refpoint_offset_ += compressed.shape_.rest_[UP] - old.shape_.rest_[UP]; compressed.space_ += old.space_; compressed.inverse_hooke_ += old.inverse_hooke_; @@ -858,19 +858,38 @@ Page_breaking::compute_line_heights () Real prev_hanging = 0; Real prev_hanging_begin = 0; Real prev_hanging_rest = 0; + Real prev_refpoint_hanging = 0; for (vsize i = 0; i < cached_line_details_.size (); i++) { Line_shape shape = cached_line_details_[i].shape_; Real a = shape.begin_[UP]; Real b = shape.rest_[UP]; - Real midline_hanging = max (prev_hanging_begin + a, prev_hanging_rest + b); - Real hanging_begin = midline_hanging - shape.begin_[DOWN]; - Real hanging_rest = midline_hanging - shape.rest_[DOWN]; + bool title = cached_line_details_[i].title_; + Real refpoint_hanging = max (prev_hanging_begin + a, prev_hanging_rest + b); + + if (i > 0) + { + Real padding = 0; + if (!cached_line_details_[i].tight_spacing_) + padding = title + ? cached_line_details_[i-1].title_padding_ + : cached_line_details_[i-1].padding_; + Real min_dist = title + ? cached_line_details_[i-1].title_min_distance_ + : cached_line_details_[i-1].min_distance_; + refpoint_hanging = max (refpoint_hanging + padding, + prev_refpoint_hanging + min_dist + + cached_line_details_[i].first_refpoint_offset_); + } + + Real hanging_begin = refpoint_hanging - shape.begin_[DOWN]; + Real hanging_rest = refpoint_hanging - shape.rest_[DOWN]; Real hanging = max (hanging_begin, hanging_rest); cached_line_details_[i].tallness_ = hanging - prev_hanging; prev_hanging = hanging; prev_hanging_begin = hanging_begin; prev_hanging_rest = hanging_rest; + prev_refpoint_hanging = refpoint_hanging; } } @@ -892,21 +911,13 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num) for (vsize i = 0; i < cached_line_details_.size (); i++) { - Real padding = 0; Real ext_len; if (cur_rod_height > 0) - { - if (!cached_line_details_[i].tight_spacing_) - padding = (cached_line_details_[i].title_ - ? cached_line_details_[i - 1].title_padding_ - : cached_line_details_[i - 1].padding_); - ext_len = cached_line_details_[i].tallness_; - } + ext_len = cached_line_details_[i].tallness_; else - { - ext_len = cached_line_details_[i].full_height(); - } - Real next_rod_height = cur_rod_height + ext_len + padding; + ext_len = cached_line_details_[i].full_height(); + + Real next_rod_height = cur_rod_height + ext_len; Real next_spring_height = cur_spring_height + cached_line_details_[i].space_; Real next_height = next_rod_height + (ragged () ? next_spring_height : 0) + min_whitespace_at_bottom_of_page (cached_line_details_[i]); diff --git a/lily/page-spacing.cc b/lily/page-spacing.cc index 4120afb514..33cf18a3fe 100644 --- a/lily/page-spacing.cc +++ b/lily/page-spacing.cc @@ -56,8 +56,7 @@ Page_spacing::append_system (const Line_details &line) rod_height_ += line.full_height (); first_line_ = line; } - if (!line.tight_spacing_) - rod_height_ += line.title_ ? last_line_.title_padding_ : last_line_.padding_; + spring_len_ += line.space_; inverse_spring_k_ += line.inverse_hooke_; @@ -69,9 +68,7 @@ Page_spacing::append_system (const Line_details &line) void Page_spacing::prepend_system (const Line_details &line) { - if (rod_height_ && !first_line_.tight_spacing_) - rod_height_ += first_line_.title_ ? line.title_padding_ : line.padding_; - else + if (!rod_height_) last_line_ = line; rod_height_ -= first_line_.full_height (); diff --git a/lily/paper-column.cc b/lily/paper-column.cc index 24d76a163a..ac0e1fbde6 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -20,6 +20,7 @@ #include "paper-column.hh" #include "axis-group-interface.hh" +#include "bar-line.hh" #include "break-align-interface.hh" #include "font-interface.hh" #include "grob-array.hh" @@ -96,20 +97,20 @@ Paper_column::Paper_column (Paper_column const &src) } int -Paper_column::compare (Grob * const &a, - Grob * const &b) +Paper_column::compare (Grob *const &a, + Grob *const &b) { - return sign (dynamic_cast (a)->rank_ - - dynamic_cast (b)->rank_); + return sign (dynamic_cast (a)->rank_ + - dynamic_cast (b)->rank_); } bool Paper_column::less_than (Grob *const &a, Grob *const &b) { - Paper_column *pa = dynamic_cast (a); - Paper_column *pb = dynamic_cast (b); - + Paper_column *pa = dynamic_cast (a); + Paper_column *pb = dynamic_cast (b); + return pa->rank_ < pb->rank_; } @@ -142,7 +143,7 @@ Paper_column::is_used (Grob *me) extract_grob_set (me, "bounded-by-me", bbm); if (bbm.size ()) return true; - + if (Paper_column::is_breakable (me)) return true; @@ -160,7 +161,7 @@ Paper_column::is_breakable (Grob *me) Real Paper_column::minimum_distance (Grob *left, Grob *right) { - Drul_array cols (left, right); + Drul_array cols (left, right); Drul_array skys = Drul_array (Skyline (RIGHT), Skyline (LEFT)); Direction d = LEFT; @@ -178,18 +179,37 @@ Paper_column::minimum_distance (Grob *left, Grob *right) } Interval -Paper_column::break_align_width (Grob *me) +Paper_column::break_align_width (Grob *me, SCM align_sym) { Grob *p = me->get_parent (X_AXIS); if (is_musical (me)) { - me->programming_error ("tried to get break-align-width of a non-musical column"); + me->programming_error ("tried to get break-align-width of a musical column"); return Interval (0, 0) + me->relative_coordinate (p, X_AXIS); } - Grob *align = Pointer_group_interface::find_grob (me, ly_symbol2scm ("elements"), - Break_alignment_interface::has_interface); + Grob *align = 0; + if (align_sym == ly_symbol2scm ("staff-bar") + || align_sym == ly_symbol2scm ("break-alignment")) + align + = Pointer_group_interface::find_grob (me, ly_symbol2scm ("elements"), + (align_sym == ly_symbol2scm ("staff-bar") + ? Bar_line::non_empty_barline + : Break_alignment_interface::has_interface)); + else + { + extract_grob_set (me, "elements", elts); + for (vsize i = 0; i < elts.size (); i++) + { + if (elts[i]->get_property ("break-align-symbol") == align_sym) + { + align = elts[i]; + break; + } + } + } + if (!align) return Interval (0, 0) + me->relative_coordinate (p, X_AXIS); @@ -203,7 +223,7 @@ MAKE_SCHEME_CALLBACK (Paper_column, print, 1); SCM Paper_column::print (SCM p) { - Paper_column *me = dynamic_cast (unsmob_grob (p)); + Paper_column *me = dynamic_cast (unsmob_grob (p)); string r = to_string (Paper_column::get_rank (me)); @@ -226,11 +246,11 @@ Paper_column::print (SCM p) Stencil l = Lookup::filled_box (Box (Interval (-0.01, 0.01), Interval (-2, -1))); - + SCM small_letters = scm_cons (scm_acons (ly_symbol2scm ("font-size"), scm_from_int (-6), SCM_EOL), properties); - + int j = 0; for (SCM s = me->get_object ("ideal-distances"); scm_is_pair (s); s = scm_cdr (s)) @@ -239,7 +259,7 @@ Paper_column::print (SCM p) if (!unsmob_grob (scm_cdar (s)) || !unsmob_grob (scm_cdar (s))->get_system ()) continue; - + j++; Real y = -j * 1 -3; vector pts; @@ -247,30 +267,30 @@ Paper_column::print (SCM p) Offset p2 (sp->distance (), y); pts.push_back (p2); - + Stencil id_stencil = Lookup::points_to_line_stencil (0.1, pts); Stencil head (musfont->find_by_name ("arrowheads.open.01")); SCM distance_stc = Text_interface::interpret_markup (me->layout ()->self_scm (), small_letters, ly_string2scm (String_convert::form_string ("%5.2lf", sp->distance ()))); - - id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (sp->distance ()/3, y+1))); + + id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (sp->distance () / 3, y + 1))); id_stencil.add_stencil (head.translated (p2)); id_stencil = id_stencil.in_color (0,0,1); l.add_stencil (id_stencil); } - + for (SCM s = me->get_object ("minimum-distances"); scm_is_pair (s); s = scm_cdr (s)) { Real dist = scm_to_double (scm_cdar (s)); - Grob *other = unsmob_grob (scm_caar (s)); + Grob *other = unsmob_grob (scm_caar (s)); if (!other || other->get_system () != me->get_system ()) continue; j++; - + Real y = -j * 1.0 -3.5; vector pts; pts.push_back (Offset (0, y)); @@ -287,10 +307,9 @@ Paper_column::print (SCM p) small_letters, ly_string2scm (String_convert::form_string ("%5.2lf", dist))); - - id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (dist/3, y-1))); - - + + id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (dist / 3, y - 1))); + id_stencil = id_stencil.in_color (1,0,0); l.add_stencil (id_stencil); } @@ -317,7 +336,7 @@ Paper_column::before_line_breaking (SCM grob) if (!ga) return SCM_UNSPECIFIED; - vector &array (ga->array_reference ()); + vector &array (ga->array_reference ()); for (vsize i = array.size (); i--;) { @@ -351,14 +370,13 @@ Paper_column::is_extraneous_column_from_ligature (Grob *me) if (Rhythmic_head::has_interface (elts[i])) { has_notehead = true; - if (dynamic_cast (elts[i])->get_column () == me) + 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" @@ -392,6 +410,5 @@ ADD_INTERFACE (Paper_column, "shortest-starter-duration " "spacing " "used " - "when " - ); + "when "); diff --git a/lily/score.cc b/lily/score.cc index fb537a3db2..31550fbbe7 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -94,7 +94,7 @@ Score::Score (Score const &s) error_found_ = s.error_found_; smobify_self (); - input_location_ = make_input (*s.origin ()); + input_location_ = make_input (*s.origin ()); Music *m = unsmob_music (s.music_); if (m) @@ -111,7 +111,7 @@ Score::Score (Score const &s) defs_.push_back (copy); copy->unprotect (); } - header_ = ly_make_anonymous_module (false); + header_ = ly_make_module (false); if (ly_is_module (s.header_)) ly_module_copy (header_, s.header_); } diff --git a/lily/self-aligment-interface.cc b/lily/self-aligment-interface.cc deleted file mode 100644 index 47607b096f..0000000000 --- a/lily/self-aligment-interface.cc +++ /dev/null @@ -1,176 +0,0 @@ -/* - This file is part of LilyPond, the GNU music typesetter. - - Copyright (C) 2004--2010 Han-Wen Nienhuys - - 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 "self-alignment-interface.hh" - -#include "warn.hh" -#include "paper-column.hh" -#include "grob.hh" - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, y_aligned_on_self, 1); -SCM -Self_alignment_interface::y_aligned_on_self (SCM element) -{ - return aligned_on_self (unsmob_grob (element), Y_AXIS, false, 0, 0); -} - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_aligned_on_self, 1); -SCM -Self_alignment_interface::x_aligned_on_self (SCM element) -{ - return aligned_on_self (unsmob_grob (element), X_AXIS, false, 0, 0); -} - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, pure_y_aligned_on_self, 3); -SCM -Self_alignment_interface::pure_y_aligned_on_self (SCM smob, SCM start, SCM end) -{ - return aligned_on_self (unsmob_grob (smob), Y_AXIS, true, robust_scm2int (start, 0), robust_scm2int (end, INT_MAX)); -} - -SCM -Self_alignment_interface::aligned_on_self (Grob *me, Axis a, bool pure, int start, int end) -{ - SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") - : ly_symbol2scm ("self-alignment-Y"); - - SCM align (me->internal_get_property (sym)); - if (scm_is_number (align)) - { - Interval ext (me->maybe_pure_extent (me, a, pure, start, end)); - if (ext.is_empty ()) - programming_error ("cannot align on self: empty element"); - else - return scm_from_double (- ext.linear_combination (scm_to_double (align))); - } - return scm_from_double (0.0); -} - - - -SCM -Self_alignment_interface::centered_on_object (Grob *him, Axis a) -{ - return scm_from_double (robust_relative_extent (him, him, a).center ()); -} - - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_x_parent, 1); -SCM -Self_alignment_interface::centered_on_x_parent (SCM smob) -{ - return centered_on_object (unsmob_grob (smob)->get_parent (X_AXIS), X_AXIS); -} - - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_y_parent, 1); -SCM -Self_alignment_interface::centered_on_y_parent (SCM smob) -{ - return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), Y_AXIS); -} - - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_centered_on_y_parent, 1); -SCM -Self_alignment_interface::x_centered_on_y_parent (SCM smob) -{ - return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), X_AXIS); -} - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_x_parent,1); -SCM -Self_alignment_interface::aligned_on_x_parent (SCM smob) -{ - return aligned_on_parent (unsmob_grob (smob), X_AXIS); -} - -MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_y_parent,1); -SCM -Self_alignment_interface::aligned_on_y_parent (SCM smob) -{ - return aligned_on_parent (unsmob_grob (smob), Y_AXIS); -} - -SCM -Self_alignment_interface::aligned_on_parent (Grob *me, Axis a) -{ - Grob *him = me->get_parent (a); - if (Paper_column::has_interface (him)) - return scm_from_double (0.0); - - Interval he = him->extent (him, a); - - SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") - : ly_symbol2scm ("self-alignment-Y"); - SCM align_prop (me->internal_get_property (sym)); - - if (!scm_is_number (align_prop)) - return scm_from_int (0); - - Real x = 0.0; - Real align = scm_to_double (align_prop); - - Interval ext (me->extent (me, a)); - if (ext.is_empty ()) - programming_error ("cannot align on self: empty element"); - else - x -= ext.linear_combination (align); - - if (!he.is_empty ()) - x += he.linear_combination (align); - - return scm_from_double (x); -} - -void -Self_alignment_interface::set_center_parent (Grob *me, Axis a) -{ - add_offset_callback (me, - (a==X_AXIS) ? centered_on_x_parent_proc : centered_on_y_parent_proc, - a); -} - -void -Self_alignment_interface::set_align_self (Grob *me, Axis a) -{ - add_offset_callback (me, - (a==X_AXIS) ? x_aligned_on_self_proc : y_aligned_on_self_proc, - a); -} - -ADD_INTERFACE (Self_alignment_interface, - "Position this object on itself and/or on its parent. To this" - " end, the following functions are provided:\n" - "\n" - "@table @code\n" - "@item Self_alignment_interface::[xy]_aligned_on_self\n" - "Align self on reference point, using" - " @code{self-alignment-X} and @code{self-alignment-Y}." - "@item Self_alignment_interface::aligned_on_[xy]_parent\n" - "@item Self_alignment_interface::centered_on_[xy]_parent\n" - "Shift the object so its own reference point is centered on" - " the extent of the parent\n" - "@end table\n", - - /* properties */ - "self-alignment-X " - "self-alignment-Y " - ); - diff --git a/lily/self-alignment-interface.cc b/lily/self-alignment-interface.cc new file mode 100644 index 0000000000..e339e8026d --- /dev/null +++ b/lily/self-alignment-interface.cc @@ -0,0 +1,171 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2004--2010 Han-Wen Nienhuys + + 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 "self-alignment-interface.hh" + +#include "grob.hh" +#include "paper-column.hh" +#include "warn.hh" + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, y_aligned_on_self, 1); +SCM +Self_alignment_interface::y_aligned_on_self (SCM element) +{ + return aligned_on_self (unsmob_grob (element), Y_AXIS, false, 0, 0); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_aligned_on_self, 1); +SCM +Self_alignment_interface::x_aligned_on_self (SCM element) +{ + return aligned_on_self (unsmob_grob (element), X_AXIS, false, 0, 0); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, pure_y_aligned_on_self, 3); +SCM +Self_alignment_interface::pure_y_aligned_on_self (SCM smob, SCM start, SCM end) +{ + return aligned_on_self (unsmob_grob (smob), Y_AXIS, true, robust_scm2int (start, 0), robust_scm2int (end, INT_MAX)); +} + +SCM +Self_alignment_interface::aligned_on_self (Grob *me, Axis a, bool pure, int start, int end) +{ + SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") + : ly_symbol2scm ("self-alignment-Y"); + + SCM align (me->internal_get_property (sym)); + if (scm_is_number (align)) + { + Interval ext (me->maybe_pure_extent (me, a, pure, start, end)); + if (ext.is_empty ()) + programming_error ("cannot align on self: empty element"); + else + return scm_from_double (- ext.linear_combination (scm_to_double (align))); + } + return scm_from_double (0.0); +} + + +SCM +Self_alignment_interface::centered_on_object (Grob *him, Axis a) +{ + return scm_from_double (robust_relative_extent (him, him, a).center ()); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_x_parent, 1); +SCM +Self_alignment_interface::centered_on_x_parent (SCM smob) +{ + return centered_on_object (unsmob_grob (smob)->get_parent (X_AXIS), X_AXIS); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_y_parent, 1); +SCM +Self_alignment_interface::centered_on_y_parent (SCM smob) +{ + return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), Y_AXIS); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_centered_on_y_parent, 1); +SCM +Self_alignment_interface::x_centered_on_y_parent (SCM smob) +{ + return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), X_AXIS); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_x_parent,1); +SCM +Self_alignment_interface::aligned_on_x_parent (SCM smob) +{ + return aligned_on_parent (unsmob_grob (smob), X_AXIS); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_y_parent,1); +SCM +Self_alignment_interface::aligned_on_y_parent (SCM smob) +{ + return aligned_on_parent (unsmob_grob (smob), Y_AXIS); +} + +SCM +Self_alignment_interface::aligned_on_parent (Grob *me, Axis a) +{ + Grob *him = me->get_parent (a); + if (Paper_column::has_interface (him)) + return scm_from_double (0.0); + + Interval he = him->extent (him, a); + + SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") + : ly_symbol2scm ("self-alignment-Y"); + SCM align_prop (me->internal_get_property (sym)); + + if (!scm_is_number (align_prop)) + return scm_from_int (0); + + Real x = 0.0; + Real align = scm_to_double (align_prop); + + Interval ext (me->extent (me, a)); + if (ext.is_empty ()) + programming_error ("cannot align on self: empty element"); + else + x -= ext.linear_combination (align); + + if (!he.is_empty ()) + x += he.linear_combination (align); + + return scm_from_double (x); +} + +void +Self_alignment_interface::set_center_parent (Grob *me, Axis a) +{ + add_offset_callback (me, + (a == X_AXIS) ? centered_on_x_parent_proc : centered_on_y_parent_proc, + a); +} + +void +Self_alignment_interface::set_align_self (Grob *me, Axis a) +{ + add_offset_callback (me, + (a == X_AXIS) ? x_aligned_on_self_proc : y_aligned_on_self_proc, + a); +} + +ADD_INTERFACE (Self_alignment_interface, + "Position this object on itself and/or on its parent. To this" + " end, the following functions are provided:\n" + "\n" + "@table @code\n" + "@item Self_alignment_interface::[xy]_aligned_on_self\n" + "Align self on reference point, using" + " @code{self-alignment-X} and @code{self-alignment-Y}." + "@item Self_alignment_interface::aligned_on_[xy]_parent\n" + "@item Self_alignment_interface::centered_on_[xy]_parent\n" + "Shift the object so its own reference point is centered on" + " the extent of the parent\n" + "@end table\n", + + /* properties */ + "self-alignment-X " + "self-alignment-Y " + ); diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index dc57a23204..30def52f28 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -208,6 +208,24 @@ Staff_symbol::on_line (Grob *me, int pos) return ((abs (pos + line_count (me)) % 2) == 1); } +Interval +Staff_symbol::line_span (Grob *me) +{ + SCM line_positions = me->get_property ("line-positions"); + Interval iv; + + if (scm_is_pair (line_positions)) + for (SCM s = line_positions; scm_is_pair (s); s = scm_cdr (s)) + iv.add_point (scm_to_double (scm_car (s))); + else + { + int count = line_count (me); + return Interval (-count + 1, count - 1); + } + + return iv; +} + ADD_INTERFACE (Staff_symbol, "This spanner draws the lines of a staff. A staff symbol" " defines a vertical unit, the @emph{staff space}. Quantities" diff --git a/lily/tie.cc b/lily/tie.cc index 563e2ca938..a3083a1d7c 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -74,12 +74,18 @@ Tie::head (Grob *me, Direction d) int Tie::get_column_rank (Grob *me, Direction d) { + Grob *col = 0; Spanner *span = dynamic_cast (me); - Grob *h = head (me, d); - if (!h) - h = span->get_bound (d); + if (!span) + col = dynamic_cast (me)->get_column (); + else + { + Grob *h = head (me, d); + if (!h) + h = span->get_bound (d); - Grob *col = dynamic_cast (h)->get_column (); + col = dynamic_cast (h)->get_column (); + } return Paper_column::get_rank (col); } diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index 1252c2e577..a7f986fb10 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -59,7 +59,7 @@ Timing_translator::initialize () */ context ()->set_property ("measureLength", Moment (Rational (1)).smobbed_copy ()); - context ()->set_property ("beatLength", + context ()->set_property ("baseMoment", Moment (Rational (1, 4)).smobbed_copy ()); } @@ -151,7 +151,10 @@ ADD_TRANSLATOR (Timing_translator, "measurePosition ", /* write */ - "internalBarNumber " + "baseMoment " "currentBarNumber " + "internalBarNumber " + "measureLength " "measurePosition " + "timeSignatureFraction " ); diff --git a/ly/bagpipe.ly b/ly/bagpipe.ly index cfe1ec1450..0b53e9ad29 100644 --- a/ly/bagpipe.ly +++ b/ly/bagpipe.ly @@ -1,15 +1,15 @@ %{ Bagpipe music settings for LilyPond. This file builds on work by Andrew McNabb (http://www.mcnabbs.org/andrew/) - - Substantial changes and additions made by + + Substantial changes and additions made by Sven Axelsson, the Murray Pipes & Drums of Gothenburg (http://www.murrays.nu) - + $Id: bagpipe.ly,v 1.12 2006/03/16 14:39:46 hanwen Exp $ %} -\version "2.12.0" +\version "2.13.29" % Notes of the scale of the Great Highland Bagpipe. Extra high notes for bombarde. % Flat notes used mainly in some modern music. @@ -69,22 +69,20 @@ showKeySignature = { % Sets the autobeamer to span quarter notes only. Use for fast music. % TODO: Needs more tweaking quarterBeaming = { - \overrideBeamSettings #'Staff #'(4 . 4) #'end - #'((* . (1 1 1 1)) ; could omit this and use beatLength - ((1 . 32) . (4 4 4 4 4 4 4 4))) - \overrideBeamSettings #'Staff #'(2 . 4) #'end - #'((* . (1 1)) - ((1 . 32) . (4 4 4 4))) + \set Staff.beamExceptions = #'() } + halfBeaming = { - \overrideBeamSettings #'Staff #'(2 . 2) #'end - #'((* . (1 1))) % could omit this and use beatLength + \set Staff.beamExceptions = #'((end . (((1 . 8) . (4 4)) + ((1 . 12) . (3 3))))) } + % Reels are in allabreve time with half note beaming. reelTime = { \time 2/2 \halfBeaming } + % 4/4 marches are written with numerical time signature and with quarter beaming. marchTime = { \time 4/4 @@ -266,12 +264,12 @@ pthrwd = { \grace { \small G16[ d32 c] } } darodo = { \grace { \small G32[ d G c G] } } Gdarodo = { \grace { \small d32[ G c G] } } % Non-gracenote piobaireachd markup. -trebling = \markup { +trebling = \markup { \override #'(baseline-skip . 0.3) - \column { - \musicglyph #"scripts.tenuto" - \musicglyph #"scripts.tenuto" - \musicglyph #"scripts.tenuto" + \column { + \musicglyph #"scripts.tenuto" + \musicglyph #"scripts.tenuto" + \musicglyph #"scripts.tenuto" } } % Abbreviated notation common in piobaireachd scores. diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index a07294f753..8522001347 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -16,7 +16,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.13.10" +\version "2.13.27" \context { \name "Global" @@ -405,7 +405,10 @@ printing of a single line of lyrics." \override VerticalAxisGroup #'remove-empty = ##t \override VerticalAxisGroup #'staff-affinity = #UP \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5)) - \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2)) + \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) + (stretchability . 0) + (padding . 0.2) + (minimum-distance . 2.8)) \override VerticalAxisGroup #'non-affinity-spacing #'padding = #1.0 \override InstrumentName #'self-alignment-Y = ##f @@ -549,9 +552,19 @@ automatically when an output definition (a @code{\score} or repeatCountVisibility = #all-repeat-counts-visible - beamSettings = #default-beam-settings + timeSignatureSettings = #default-time-signature-settings + timeSignatureFraction = #'(4 . 4) + +%% These defaults should be the same as the rules established in +%% scm/time-signature-settings.scm for 4/4 time + measureLength = #(ly:make-moment 4 4) + baseMoment = #(ly:make-moment 1 4) + beatStructure = #'(1 1 1 1) + beamExceptions = #'((end . (((1 . 8) . (4 4)) + ((1 . 12) . (3 3 3 3))))) autoBeaming = ##t autoBeamCheck = #default-auto-beam-check + scriptDefinitions = #default-script-alist pedalSustainStrings = #'("Ped." "*Ped." "*") diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index 52299a0361..f26e0a1154 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -18,7 +18,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.12.0" +\version "2.13.29" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -409,29 +409,19 @@ ottava = (_i "Set the octavation.") (make-ottava-set octave)) -overrideBeamSettings = +overrideTimeSignatureSettings = #(define-music-function - (parser location context time-signature rule-type grouping-rule) - (symbol? pair? symbol? pair?) - - (_i "Override beamSettings in @var{context} -for time signatures of @var{time-signature} and rules of type -@var{rule-type} to have a grouping rule alist -@var{grouping-rule}. -@var{rule-type} can be @code{end} or @code{subdivide}, -with a potential future value of @code{begin}. -@var{grouping-rule} is an alist of @var{(beam-type . grouping)} -entries. @var{grouping} is in units of @var{beam-type}. If -@var{beam-type} is @code{*}, grouping is in units of the denominator -of @var{time-signature}.") + (parser location context time-signature base-moment beat-structure beam-exceptions) + (symbol? pair? pair? cheap-list? cheap-list?) + + (_i "Override @code{timeSignatureSettings} in @var{context} +for time signatures of @var{time-signature} to have settings +of @var{base-moment}, @var{beat-structure}, and @var{beam-exceptions}.") ;; TODO -- add warning if largest value of grouping is ;; greater than time-signature. - - #{ - #(override-beam-setting - $time-signature $rule-type $grouping-rule $context) - #}) + (let ((setting (make-setting base-moment beat-structure beam-exceptions))) + (override-time-signature-setting time-signature setting context))) overrideProperty = #(define-music-function (parser location name property value) @@ -675,18 +665,14 @@ resetRelativeOctave = reference-note)) -revertBeamSettings = +revertTimeSignatureSettings = #(define-music-function - (parser location context time-signature rule-type) - (symbol? pair? symbol?) + (parser location context time-signature) + (symbol? pair?) - (_i "Revert beam settings in @var{context} for time signatures of -@var{time-signature} and groups of type -@var{group-type}. @var{group-type} can be @code{end} -or @code{subdivide}.") - #{ - #(revert-beam-setting $time-signature $rule-type $context) - #}) + (_i "Revert @code{timeSignatureSettings} in @var{context} +for time signatures of @var{time-signature}.") + (revert-time-signature-setting time-signature context)) rightHandFinger = #(define-music-function (parser location finger) (number-or-string?) @@ -710,26 +696,6 @@ scaleDurations = (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction)))) -setBeatGrouping = -#(define-music-function (parser location grouping) (pair?) - (_i "Set the beat grouping in the current time signature to -@var{grouping}.") - (define (default-group-setting c) - (let* ((context-time-signature - (ly:context-property c 'timeSignatureFraction)) - (time-signature (if (null? context-time-signature) - '(4 . 4) - context-time-signature))) - (override-property-setting - c - 'beamSettings - (list time-signature 'end) - (list (cons '* grouping))))) - - (context-spec-music - (make-apply-context default-group-setting) - 'Score)) - shiftDurations = #(define-music-function (parser location dur dots arg) (integer? integer? ly:music?) diff --git a/make/lilypond-book-rules.make b/make/lilypond-book-rules.make new file mode 100644 index 0000000000..e5a03790b4 --- /dev/null +++ b/make/lilypond-book-rules.make @@ -0,0 +1,56 @@ +.SUFFIXES: .html .xml .lytex .tex .latex .lyxml .tely .texi .texinfo + +############## HTML ######################### + +$(outdir)/%.html: %.html + $(LILYPOND_BOOK_COMMAND) -o $(outdir) $< + +$(outdir)/%.html: %.htmly + $(LILYPOND_BOOK_COMMAND) -o $(outdir) $< + +$(outdir)/%.html: %.xml + $(LILYPOND_BOOK_COMMAND) -o $(outdir) $< + + +############## LaTeX ######################## + +$(outdir)/%.tex: %.lytex + $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $< + +$(outdir)/%.tex: %.tex + $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $< + +$(outdir)/%.tex: %.latex + $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $< + +# Add the tex => pdf rule only if we have dblatex +ifeq (,$(findstring pdflatex,$(MISSING_OPTIONAL))) +$(outdir)/%.pdf: $(outdir)/%.tex + cd $(outdir) && $(PDFLATEX) $(notdir $<) +endif + +############## Texinfo ###################### + +$(outdir)/%.texi: %.texi + $(LILYPOND_BOOK_COMMAND) -o $(outdir) $< + +$(outdir)/%.texi: %.itexi + $(LILYPOND_BOOK_COMMAND) -o $(outdir) $< + +$(outdir)/%.texi: %.texinfo + $(LILYPOND_BOOK_COMMAND) -o $(outdir) $< + +$(outdir)/%.texi: %.tely + $(LILYPOND_BOOK_COMMAND) -o $(outdir) $< + + +############## DocBook ###################### + +$(outdir)/%.xml: %.lyxml + $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $< + +# Add the xml => pdf rule only if we have dblatex +ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL))) +$(outdir)/%.pdf: $(outdir)/%.xml + cd $(outdir) && $(DBLATEX) $(notdir $<) +endif diff --git a/make/lilypond-book-targets.make b/make/lilypond-book-targets.make new file mode 100644 index 0000000000..0f63330a21 --- /dev/null +++ b/make/lilypond-book-targets.make @@ -0,0 +1 @@ +default: diff --git a/make/lilypond-book-vars.make b/make/lilypond-book-vars.make new file mode 100644 index 0000000000..3627b50054 --- /dev/null +++ b/make/lilypond-book-vars.make @@ -0,0 +1,62 @@ +# rules for directories with html files. + +LILYPOND_BOOK_COMMAND = LILYPOND_VERSION=$(TOPLEVEL_VERSION) \ + $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) \ + --process='$(LILYPOND_BOOK_PROCESS) \ + $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) \ + $(LILYPOND_BOOK_FLAGS) + +HTML_FILES = $(call src-wildcard,*.html) +HTMLY_FILES = $(call src-wildcard,*.htmly) +XML_FILES = $(call src-wildcard,*.xml) +LYTEX_FILES = $(call src-wildcard,*.lytex) +LATEX_FILES = $(call src-wildcard,*.latex) +TEX_FILES = $(call src-wildcard,*.tex) +TEXI_FILES = $(call src-wildcard,*.texi) +TEXINFO_FILES = $(call src-wildcard,*.texinfo) +TELY_FILES = $(call src-wildcard,*.tely) +DOCBOOK_FILES = $(call src-wildcard,*.lyxml) + +OUT_HTML_FILES = ${HTML_FILES:%.html=$(outdir)/%.html} +OUT_HTMLY_FILES = ${HTML_FILES:%.htmly=$(outdir)/%.html} +OUT_XML_FILES = ${XML_FILES:%.xml=$(outdir)/%.html} +# If we have pdflatex, create the pdf, otherwise only the .tex file! +ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL))) +OUT_LYTEX_FILES = ${LYTEX_FILES:%.lytex=$(outdir)/%.pdf} +OUT_LATEX_FILES = ${LATEX_FILES:%.latex=$(outdir)/%.pdf} +OUT_TEX_FILES = ${TEX_FILES:%.tex=$(outdir)/%.pdf} +else +OUT_LYTEX_FILES = ${LYTEX_FILES:%.lytex=$(outdir)/%.tex} +OUT_LATEX_FILES = ${LATEX_FILES:%.latex=$(outdir)/%.tex} +OUT_TEX_FILES = ${TEX_FILES:%.tex=$(outdir)/%.tex} +endif +OUT_TEXI_FILES = ${TEXI_FILES:%.texi=$(outdir)/%.html} +OUT_TEXINFO_FILES = ${TEXINFO_FILES:%.texinfo=$(outdir)/%.html} +OUT_TELY_FILES = ${TELY_FILES:%.tely=$(outdir)/%.html} +# If we have dblatex, create the pdf, otherwise only the .xml file! +ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL))) +OUT_DOCBOOK_FILES = ${DOCBOOK_FILES:%.lyxml=$(outdir)/%.pdf} +else +OUT_DOCBOOK_FILES = ${DOCBOOK_FILES:%.lyxml=$(outdir)/%.xml} +endif + +OUT_FILES = $(sort $(OUT_HTML_FILES) \ + $(OUT_HTMLY_FILES) \ + $(OUT_XML_FILES) \ + $(OUT_LYTEX_FILES) \ + $(OUT_LATEX_FILES) \ + $(OUT_TEX_FILES) \ + $(OUT_TEXI_FILES) \ + $(OUT_TEXINFO_FILES) \ + $(OUT_TELY_FILES) \ + $(OUT_DOCBOOK_FILES)) + +ALL_SOURCES +=\ + $(HTML_FILES)\ + $(HTMLY_FILES)\ + $(XML_FILES)\ + $(LYTEX_FILES)\ + $(LATEX_FILES)\ + $(TEX_FILES)\ + $(TEXINFO_FILES)\ + $(DOCBOOK_FILES) diff --git a/make/lysdoc-rules.make b/make/lysdoc-rules.make index cfaabe3355..5c38f7d4ab 100644 --- a/make/lysdoc-rules.make +++ b/make/lysdoc-rules.make @@ -1,2 +1,2 @@ $(outdir)/collated-files.tely: $(COLLATED_FILES) - $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" $^ + $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" $^ diff --git a/make/lysdoc-vars.make b/make/lysdoc-vars.make index 5cbc61717c..337460c3da 100644 --- a/make/lysdoc-vars.make +++ b/make/lysdoc-vars.make @@ -1,4 +1,5 @@ TITLE=LYs Doc +AUTHOR=Han-Wen Nienhuys and Jan Nieuwenhuizen ifeq ($(COLLATED_FILES),) diff --git a/ps/GNUmakefile b/ps/GNUmakefile index d05179fd4e..8967ca4a2d 100644 --- a/ps/GNUmakefile +++ b/ps/GNUmakefile @@ -8,13 +8,4 @@ EXTRA_DIST_FILES = $(PS_FILES) INSTALLATION_DIR=$(local_lilypond_datadir)/ps/ INSTALLATION_FILES=$(PS_FILES) -# teTeX-3.0 compatibility. -local-install: - -$(INSTALL) -d $(DESTDIR)$(local_lilypond_datadir)/dvips - (cd $(DESTDIR)$(local_lilypond_datadir)/dvips && ln -sf ../ps .) - -local-uninstall: - -rm -f $(DESTDIR)$(local_lilypond_datadir)/dvips/ps - -rmdir $(DESTDIR)$(local_lilypond_datadir)/dvips - include $(depth)/make/stepmake.make diff --git a/python/convertrules.py b/python/convertrules.py index 465eead803..673d04d478 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -3005,6 +3005,31 @@ def conv (str): str = re.sub (r'\\(cresc|dim|endcresc|enddim)\b', r'\\deprecated\1', str) return str +@rule ((2, 13, 29), + _ ("Eliminate beamSettings, beatLength, \setBeatGrouping, \overrideBeamSettings and \revertBeamSettings")) +def conv(str): + if re.search(r'overrideBeamSettings', str): + stderr_write("\n") + stderr_write(NOT_SMART % _("\overrideBeamSettings. Use \set beamExceptions or \overrideTimeSignatureSettings.\n")) + stderr_write(UPDATE_MANUALLY) + if re.search(r'revertBeamSettings', str): + stderr_write("\n") + stderr_write(NOT_SMART % _("\revertBeamSettings. Use \set beamExceptions or \revertTimeSignatureSettings.\n")) + stderr_write(UPDATE_MANUALLY) + if re.search(r'beamSettings', str): + stderr_write("\n") + stderr_write(NOT_SMART % _("beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n")) + stderr_write(UPDATE_MANUALLY) + if re.search(r'beatLength', str): + stderr_write("\n") + stderr_write(NOT_SMART % _("beatLength. Use baseMoment and beatStructure.\n")) + stderr_write(UPDATE_MANUALLY) + if re.search(r'setBeatGrouping', str): + stderr_write("\n") + stderr_write(NOT_SMART % _("setbeatGrouping. Use baseMoment and beatStructure.\n")) + stderr_write(UPDATE_MANUALLY) + return str + # Guidelines to write rules (please keep this at the end of this file) # # - keep at most one rule per version; if several conversions should be done, diff --git a/python/lilylib.py b/python/lilylib.py index 9dc4f3e498..4bf4e1ceeb 100644 --- a/python/lilylib.py +++ b/python/lilylib.py @@ -258,4 +258,5 @@ class NonDentedHeadingFormatter (optparse.IndentedHelpFormatter): def get_option_parser (*args, **kwargs): p = optparse.OptionParser (*args, **kwargs) p.formatter = NonDentedHeadingFormatter () + p.formatter.set_parser (p) return p diff --git a/scm/auto-beam.scm b/scm/auto-beam.scm index 43ec64e9b4..c8877ecd7a 100644 --- a/scm/auto-beam.scm +++ b/scm/auto-beam.scm @@ -15,36 +15,51 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . -;; Determine end moment for auto beaming (or begin moment, but mostly -;; 0== anywhere). We only consider the current time signature. -;; In order of decreasing priority: +;; Determine whether an auto beam should be extended to the right +;; of the current stem. We start anywhere except on the last note +;; of a beat. We end according to the follwing rules, in order +;; of decreasing priority: ;; ;; 1. end -;; 2. end * -;; 3. if 1-2 not specified, begin anywhere, end at beatLength intervals +;; 2. end +;; 3. if 1-2 not specified, end at beatStructure intervals ;; ;; Rationale: ;; ;; [user override] ;; 1. override for specific duration type -;; 2. override for all duration types in a time signature. +;; 2. overrides apply to shorter durations ;; -;; defined in scm/beam-settings.scm: +;; defined in scm/time-signature-settings.scm: ;; 1. Default grouping for common time signatures -;; 2. exceptions for specific time signature, for specific duration type - (define-public (default-auto-beam-check context dir measure-pos test-beam) (define (get name default) (let ((value (ly:context-property context name))) (if (not (null? value)) value default))) - (define (ending-moments group-list start-beat beat-length) + (define (beamingmoment (car a)) + (fraction->moment (car b)))) + + (define (ending-moments group-list start-beat base-moment) (if (null? group-list) '() (let ((new-start (+ start-beat (car group-list)))) - (cons (ly:moment-mul (ly:make-moment new-start 1) beat-length) - (ending-moments (cdr group-list) new-start beat-length))))) + (cons (ly:moment-mul (ly:make-moment new-start 1) base-moment) + (ending-moments (cdr group-list) new-start base-moment))))) + + (define (larger-setting test-beam sorted-alist) + (if (null? sorted-alist) + '() + (let* ((first-key (caar sorted-alist)) + (first-moment (fraction->moment first-key))) + (if (moment<=? test-beam first-moment) + (car sorted-alist) + (larger-setting test-beam (cdr sorted-alist)))))) + + (define (beat-end? moment beat-structure) + (pair? (member moment beat-structure))) ;; member returns a list if found, not #t ;; Start of actual auto-beam test routine ;; @@ -53,46 +68,53 @@ (if (and (!= (ly:moment-grace-numerator (ly:context-now context)) 0) (= dir START)) #f - (if (= dir START) - ;; start anywhere is currently implemented - #t - (let* ((beat-length (get 'beatLength (ly:make-moment 1 4))) - (measure-length (get 'measureLength (ly:make-moment 1 1))) - (time-signature-fraction - (get 'timeSignatureFraction '(4 . 4))) - (settings (get 'beamSettings '())) - (function (if (= dir START) 'begin 'end)) - (type (cons (ly:moment-main-numerator test-beam) - (ly:moment-main-denominator test-beam))) - (pos (if (>= (ly:moment-main-numerator measure-pos) 0) - measure-pos - (ly:moment-add measure-length measure-pos))) - (type-grouping (ly:beam-grouping - settings - time-signature-fraction - function - type)) - (default-grouping (ly:beam-grouping - settings - time-signature-fraction - function - '*)) - (beat-grouping (if (null? type-grouping) - default-grouping - type-grouping)) - (grouping-moment (if (null? type-grouping) - beat-length - test-beam)) - (grouping-moments (ending-moments - beat-grouping 0 grouping-moment))) - (if (null? beat-grouping) - ;; no rule applies, so end at beatLength - (= (ly:moment-main-denominator - (ly:moment-div pos beat-length)) 1) - ;; otherwise, end at beginning of measure or - ;; at specified moment - (or - ;; start/end at beginning of measure - (= (ly:moment-main-numerator pos) 0) - ;; end if measure-pos matches a specified ending moment - (member pos grouping-moments))))))) + (let* ((base-moment (get 'baseMoment (ly:make-moment 1 4))) + (measure-length (get 'measureLength (ly:make-moment 1 1))) + (time-signature-fraction + (get 'timeSignatureFraction '(4 . 4))) + (beat-structure (get 'beatStructure '(1 1 1 1))) + (beat-endings (ending-moments beat-structure 0 base-moment)) + (exceptions (sort (assoc-get 'end + (get 'beamExceptions '()) + '()) + beamingfraction test-beam)) + (non-grace (ly:make-moment + (ly:moment-main-numerator measure-pos) + (ly:moment-main-denominator measure-pos))) + (pos (if (ly:momentmoment default-beat-length) + test-beam)) + (exception-moments (ending-moments + exception-grouping 0 grouping-moment))) + + (if (= dir START) + ;; Start rules + (or (not (equal? time-signature-fraction '(3 . 4))) ;; start anywher if not 3/4 + (beat-end? pos beat-endings) ;; are we at start of beat? + (and (not (equal? test-beam base-moment)) ;; is beat split? + (not (beat-end? (ly:moment-add pos test-beam) + beat-endings)))) ;; will this note end the beat + ;; End rules + (or (= (ly:moment-main-numerator pos) 0) ;; end at measure beginning + (if (null? exception-grouping) + (beat-end? pos beat-endings) ;; no exception, so check beat ending + (member pos exception-moments))))))) ;; check exception rule + diff --git a/scm/beam-settings.scm b/scm/beam-settings.scm deleted file mode 100644 index ecc7c8e412..0000000000 --- a/scm/beam-settings.scm +++ /dev/null @@ -1,240 +0,0 @@ -;;;; This file is part of LilyPond, the GNU music typesetter. -;;;; -;;;; Copyright (C) 2009--2010 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 -;;;; 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 . - -;;; specify default beaming rules - -;;; format: -;;; -;;; alist of -;;; ((time-signature function) . (beam-type . grouping)) entries -;;; -;;; where -;;; -;;; time-signature = time signature fraction (pair of numbers, (4 . 4) ) -;;; function = 'end or 'subdivide (possibly implement 'begin in the future) -;;; beam-type = '* or (numerator . denominator); e.g. (1 . 16) -;;; NOTE: numerator is kept in beam-type because of -;;; tuplets, e.g. (2 . 24) = (2 . 3) * (1 . 8) -;;; for eighth-note triplets. -;;; grouping = a list of groups, in units of time signature denominator -;;; (for default rules) or beam-type (for explicit rules) -;;; - -(define-public default-beam-settings - `( - ;; in 2 2 time: - ;; default: end beams on 1 2 note boundaries - ;; end beams with 32nd notes each 1 4 beat - (((2 . 2) end) . - ((* . (1 1)) - ((1 . 32) . (8 8 8 8)))) - - ;; in 2 4, 2 8 and 2 16 time: - ;; default: end beams on beats - (((2 . 4) end) . ((* . (1 1)))) - (((2 . 8) end) . ((* . (1 1)))) - (((2 . 16) end) . ((* . (1 1)))) - - ;; in 3 2 time: - ;; default: end beams on beats - ;; end beams with 32nd notes each 1 4 beat - (((3 . 2) end) . - ((* . (1 1 1)) - ((1 . 32) . (8 8 8 8 8 8)))) - - ;; in 3 4 time: - ;; default: set grouping to (3) so we'll get - ;; the proper measure grouping symbol - ;; - ;; set all beams to end on beats, but 1 8 to beam entire measure - (((3 . 4) end) .((* . (3)) - ((1 . 8) . (6)) - ((1 . 16) . (4 4 4)) - ((1 . 32) . (8 8 8)) - ((1 . 64) . (16 16 16)) - ((1 . 128) . (32 32 32)))) - - ;; in 3 8 and 3 16 time time: - ;; default: group on 3 - (((3 . 8) end) . ((* . (3)))) - (((3 . 16) end) . ((* . (3)))) - - ;; in 4 2 time: - ;; default: end beams on beats - ;; end beams with 16th notes each 1 4 beat - ;; end beams with 32nd notes each 1 8 beat - (((4 . 2) end) . - ((* . (1 1 1 1)) - ((1 . 16) . (4 4 4 4 4 4 4 4)) - ((1 . 32) . (4 4 4 4 - 4 4 4 4 - 4 4 4 4 - 4 4 4 4)))) - - ;; in 4 4 (common) time: - ;; default: end beams on beats - ;; end beams with 8th notes each 1 2 beat - (((4 . 4) end) . - ((* . (1 1 1 1)) - ((1 . 8) . (4 4)))) - - ;; in 4 8 time: - ;; default: group on 1 4 notes - (((4 . 8) end) . ((* . (2 2)))) - - ;; in 4 16 time: - ;; default: group on beats - (((4 . 16) end) . ((* . (1 1 1 1)))) - - ;; in 6 4 time: - ;; default group at 3 4 - ;; end beams with 16th or 32nd notes each 1 4 beat - (((6 . 4) end) . - ((* . (3 3)) - ((1 . 16) . (4 4 4 4 4 4)) - ((1 . 32) . (8 8 8 8 8 8)))) - - ;; in 6 8 time: - ;; default: group at 3 8 - ;; end beams with 32nd notes each 1 8 beat - (((6 . 8) end) . - ((* . (3 3)) - ((1 . 32) . (4 4 4 4 4 4)))) - - ;; in 6 16 time: - ;; default: group at 3 16 - (((6 . 16) end) . ((* . (3 3)))) - - ;; in 9 4 time: - ;; default: group at 3 4 - ;; end beams with 16th or 32nd notes each 1 4 beat - (((9 . 4) end) . - ((* . (3 3 3)) - ((1 . 16) . (4 4 4 4 4 4 4 4 4)) - ((1 . 32) . (8 8 8 8 8 8 8 8 8)))) - - ;; in 9 8 time: - ;; default: group at 3 8 - ;; use beatGrouping for all except 32nd notes - ;; end beams with 32nd notes each 1 8 beat - (((9 . 8) end) . - ((* . (3 3 3)) - ((1 . 32) . (4 4 4 4 4 4 4 4 4)))) - - ;; in 9 16 time - ;; default: group at 3 8 - (((9 . 16) end) . ((* . (3 3 3)))) - - ;; in 12 4 time: - ;; default: group at 3 4 - ;; end beams with 16th or 32nd notes each 1 4 beat - (((12 . 4) end) . - ((* . (3 3 3 3)) - ((1 . 16) . (4 4 4 4 4 4 4 4 4 4 4 4 4)) - ((1 . 32) . (8 8 8 8 8 8 8 8 8 8 8 8 8)))) - - ;; in 12 8 time: - ;; default: group at 3 8 - ;; end beams with 32nd notes each 1 8 beat - (((12 . 8) end) . - ((* . (3 3 3 3)) - ((1 . 32) . (4 4 4 4 4 4 4 4 4 4 4 4 4)))) - - ;; in 12 16 time: - ;; default: group at 3 16 - (((12 . 16) end) . ((* . (3 3 3 3)))) - - ;; in 5 8 time: - ;; default: group (3 2) - (((5 . 8) end) . ((* . (3 2)))) - - ;; in 8 8 time: - ;; default: group (3 3 2) - (((8 . 8) end) . ((* . (3 3 2)))) - )) ; end of alist definition - -;;; Functions for overriding beam settings -;;; - -(define (overridden-property-alist context property setting value) - "Return an alist containing the current @{context} value of -@code{property} overriden by @code{(setting . value)}. " - (cons (cons setting value) (ly:context-property context property))) - -(define-public (override-property-setting context property setting value) - "Like the C++ code that executes \\override, but without type -checking. " - (ly:context-set-property! - context property - (overridden-property-alist context property setting value))) - -(define (revert-property-setting context property setting) - "Like the C++ code that executes \revert, but without type -checking. " - - (define (revert-member alist entry new) - "Return ALIST, with ENTRY removed. ALIST is not modified, instead -a fresh copy of the list-head is made." - (cond - ((null? alist) new) - ((equal? (car alist) entry) (revert-member (cdr alist) entry new)) - (else (revert-member (cdr alist) entry (cons (car alist) new))))) - - (ly:context-set-property! - context property - (revert-member (ly:context-property context property) setting '()))) - -(define-public (override-beam-setting - time-signature rule-type rule . rest) - "Override the beam settings for the context in @var{rest}, -for @var{time-signature} and @var{rule-type}, with the -new rule alist @var{rule}. " - (define (make-setting c) - (let ((new-settings - (overridden-property-alist - c - 'beamSettings - (list time-signature rule-type) - rule))) - (ly:context-set-property! c 'beamSettings new-settings))) - - (let ((music-to-export - (context-spec-music - (make-apply-context make-setting) - (if (and (pair? rest) (symbol? (car rest))) - (car rest) - 'Voice)))) - (ly:export music-to-export))) - -(define-public (score-override-beam-setting - time-signature rule-type rule) - (override-beam-setting - time-signature rule-type rule 'Score)) - -(define-public (revert-beam-setting - time-signature rule-type . rest) - (ly:export - (context-spec-music - (make-apply-context - (lambda (c) - (revert-property-setting - c - 'beamSettings - (list time-signature rule-type)))) - (if (and (pair? rest) (symbol? (car rest))) - (car rest) - 'Voice)))) diff --git a/scm/define-context-properties.scm b/scm/define-context-properties.scm index 1da05b637a..755c9fdf34 100644 --- a/scm/define-context-properties.scm +++ b/scm/define-context-properties.scm @@ -121,6 +121,8 @@ each note.") (barNumberVisibility ,procedure? "A Procedure that takes an integer and returns whether the corresponding bar number should be printed.") + (baseMoment ,ly:moment? "Smallest unit of time that will stand on its +own as a subdivided section.") (bassFigureFormatFunction ,procedure? "A procedure that is called to produce the formatting for a @code{BassFigure} grob. It takes a list of @code{BassFigureEvent}s, a context, and the grob to @@ -128,13 +130,10 @@ format.") (bassStaffProperties ,list? "An alist of property settings to apply for the down staff of @code{PianoStaff}. Used by @code{\\autochange}.") - (beamSettings ,list? "Specifies when automatically generated -beams should begin and end, as well as beam subdivision behavior. -See @ruser{Setting automatic beam -behavior} for more information.") - (beatLength ,ly:moment? "The length of one beat in this time -signature.") - + (beamExceptions ,list? "An alist of exceptions to autobeam rules +that normally end on beats.") + (beatStructure ,list? "List of @code{baseMoment}s that are combined +to make beats.") (chordChanges ,boolean? "Only show changes in chords scheme?") (chordNameExceptions ,list? "An alist of chord exceptions. @@ -442,7 +441,7 @@ one).") (strokeFingerOrientations ,list? "See @code{fingeringOrientations}.") (subdivideBeams ,boolean? "If set, multiple beams will be -subdivided at beat positions by only drawing one beam over the beat.") +subdivided at @code{baseMoment} positions by only drawing one beam over the beat.") (suggestAccidentals ,boolean? "If set, accidentals are typeset as cautionary suggestions over the note.") (systemStartDelimiter ,symbol? "Which grob to make for the start @@ -470,6 +469,10 @@ arpeggios.") (timeSignatureFraction ,number-pair? "A pair of numbers, signifying the time signature. For example, @code{#'(4 . 4)} is a 4/4 time signature.") + (timeSignatureSettings ,cheap-list? "A nested alist of settings for +time signatures. Contains elements for various time signatures. The +element for each time signature contains entries for @code{baseMoment}, +@code{beatStructure}, and @code{beamExceptions}.") (timing ,boolean? "Keep administration of measure length, position, bar number, etc.? Switch off for cadenzas.") (tonic ,ly:pitch? "The tonic of the current scale.") diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index f66884edd0..b3401d2261 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -502,9 +502,11 @@ correction and @code{1} for full correction.") ;; l ;; (labels ,list? "List of labels (symbols) placed on a column.") - (layer ,integer? "The output layer (a value between 0 -and@tie{}2): Layers define the order of printing objects. Objects in -lower layers are overprinted by objects in higher layers.") + (layer ,integer? "An integer which determines the order of printing +objects. Objects with the lowest value of layer are drawn first, then +objects with progressively higher values are drawn, so objects with +higher values overwrite objects with lower values. By default most +objects are assigned a layer value of 1.") (ledger-line-thickness ,number-pair? "The thickness of ledger lines. It is the sum of 2@tie{}numbers: The first is the factor for line thickness, and the second for staff space. Both contributions @@ -753,6 +755,16 @@ there.") (spacing-increment ,number? "Add this much space for a doubled duration. Typically, the width of a note head. See also @rinternals{spacing-spanner-interface}.") + (spacing-pair ,pair? "A pair of alignment symbols which set an object's +spacing relative to its left and right @code{BreakAlignment}s. + +For example, a @code{MultiMeasureRest} will ignore prefatory items at its +bounds (i.e., clefs, key signatures and time signatures) using the following +override: + +@example +\\override MultiMeasureRest #'spacing-pair = #'(staff-bar . staff-bar) +@end example") (springs-and-rods ,boolean? "Dummy variable for triggering spacing routines.") (stacking-dir ,ly:dir? "Stack objects in which direction?") @@ -991,7 +1003,7 @@ objects.") (adjacent-pure-heights ,pair? "A pair of vectors. Used by a @code{VerticalAxisGroup} to cache the @code{Y-extent}s of different column ranges.") - + (bar-extent ,number-pair? "The Y-extent of the actual bar line. This may differ from @code{Y-extent} because it does not include the dots in a repeat bar line.") diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 174ad039bf..15d0b0d908 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1174,6 +1174,7 @@ (expand-limit . 10) (hair-thickness . 2.0) (padding . 1) + (spacing-pair . (break-alignment . staff-bar)) (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) (staff-position . 0) (stencil . ,ly:multi-measure-rest::print) @@ -1295,6 +1296,7 @@ (NoteHead . ( (duration-log . ,note-head::calc-duration-log) + (extra-spacing-height . ,ly:note-head::include-ledger-line-height) (glyph-name . ,note-head::calc-glyph-name) (stem-attachment . ,ly:note-head::calc-stem-attachment) (stencil . ,ly:note-head::print) @@ -1413,6 +1415,7 @@ (dot-negative-kern . 0.75) (font-encoding . fetaMusic) (slope . 1.0) + (spacing-pair . (break-alignment . staff-bar)) (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) (stencil . ,ly:multi-measure-rest::percent) (thickness . 0.48) diff --git a/scm/define-music-display-methods.scm b/scm/define-music-display-methods.scm index 53bddaac93..f3304dadab 100644 --- a/scm/define-music-display-methods.scm +++ b/scm/define-music-display-methods.scm @@ -1001,7 +1001,7 @@ Otherwise, return #f. Note: default grouping is not available." (> (length ?elts) 2) (with-music-match ((cadr ?elts) (music 'PropertySet - symbol 'beatLength)) + symbol 'baseMoment)) #t) (with-music-match ((caddr ?elts) (music 'PropertySet diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index a179295cf5..8949fec945 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -593,9 +593,8 @@ fonts inline." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-public (convert-to-pdf book name) - (let* ((defs (ly:paper-book-paper book)) - (landscape (ly:output-def-lookup defs 'landscape)) +(define (output-width-height defs) + (let* ((landscape (ly:output-def-lookup defs 'landscape)) (output-scale (ly:output-def-lookup defs 'output-scale)) (convert (lambda (x) (* x output-scale (/ (ly:bp 1))))) @@ -603,25 +602,35 @@ fonts inline." (paper-height (convert (ly:output-def-lookup defs 'paper-height))) (w (if landscape paper-height paper-width)) (h (if landscape paper-width paper-height))) - (if (equal? (basename name ".ps") "-") - (set! name (string-append "./" name))) - (postscript->pdf w h name))) + (cons w h))) + +(define (output-resolution defs) + (let ((defs-resolution (ly:output-def-lookup defs 'pngresolution))) + (if (number? defs-resolution) + defs-resolution + (ly:get-option 'resolution)))) + +(define (output-filename name) + (if (equal? (basename name ".ps") "-") + (string-append "./" name) + name)) + +(define-public (convert-to-pdf book name) + (let* ((defs (ly:paper-book-paper book)) + (width-height (output-width-height defs)) + (width (car width-height)) + (height (cdr width-height)) + (filename (output-filename name))) + (postscript->pdf width height filename))) (define-public (convert-to-png book name) (let* ((defs (ly:paper-book-paper book)) - (defs-resolution (ly:output-def-lookup defs 'pngresolution)) - (resolution (if (number? defs-resolution) - defs-resolution - (ly:get-option 'resolution))) - (paper-width (ly:output-def-lookup defs 'paper-width)) - (paper-height (ly:output-def-lookup defs 'paper-height)) - (output-scale (ly:output-def-lookup defs 'output-scale))) - (if (equal? (basename name ".ps") "-") - (set! name (string-append "./" name))) - (postscript->png resolution - (* paper-width output-scale (/ (ly:bp 1))) - (* paper-height output-scale (/ (ly:bp 1))) - name))) + (resolution (output-resolution defs)) + (width-height (output-width-height defs)) + (width (car width-height)) + (height (cdr width-height)) + (filename (output-filename name))) + (postscript->png resolution width height filename))) (define-public (convert-to-ps book name) #t) diff --git a/scm/lily-library.scm b/scm/lily-library.scm index 8958c81cc1..254fb397d9 100644 --- a/scm/lily-library.scm +++ b/scm/lily-library.scm @@ -66,6 +66,15 @@ (or (equal? a b) (ly:momentmoment fraction) + (if (null? fraction) + ZERO-MOMENT + (ly:make-moment (car fraction) (cdr fraction)))) + +(define-public (moment->fraction moment) + (cons (ly:moment-main-numerator moment) + (ly:moment-main-denominator moment))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; arithmetic (define-public (average x . lst) diff --git a/scm/lily.scm b/scm/lily.scm index 67958290d8..14c283a3e5 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -375,7 +375,7 @@ LilyPond safe mode. The syntax is the same as `define*-public'." "part-combiner.scm" "autochange.scm" "define-music-properties.scm" - "beam-settings.scm" + "time-signature-settings.scm" "auto-beam.scm" "chord-name.scm" "bezier-tools.scm" @@ -682,7 +682,7 @@ PIDs or the number of the process." (eval-string (ly:command-line-code)) (if (ly:get-option 'help) (begin (ly:option-usage) - (ly:exit 0 #t ))) + (ly:exit 0 #t))) (if (ly:get-option 'show-available-fonts) (begin (ly:font-config-display-fonts) (ly:exit 0 #t))) @@ -798,7 +798,6 @@ PIDs or the number of the process." (for-each (lambda (s) (ly:set-option (car s) (cdr s))) all-settings) - (ly:clear-anonymous-modules) (ly:set-option 'debug-gc-assert-parsed-dead #t) (gc) (ly:set-option 'debug-gc-assert-parsed-dead #f) diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 57f17baaa2..011cdaf2ab 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -265,9 +265,19 @@ through MUSIC." (set! (ly:music-property r 'element) main) (set! (ly:music-property r 'repeat-count) (max times 1)) (set! (ly:music-property r 'elements) talts) - (if (equal? name "tremolo") - (let* ((dots (1- (logcount times))) - (mult (/ (* times (ash 1 dots)) (1- (ash 2 dots)))) + (if (and (equal? name "tremolo") + (pair? (ly:music-property main 'elements))) + ;; This works for single-note and multi-note tremolos! + (let* ((children (if (music-is-of-type? main 'sequential-music) + ;; \repeat tremolo n { ... } + (length (ly:music-property main 'elements)) + ;; \repeat tremolo n c4 + 1)) + ;; # of dots is equal to the 1 in bitwise representation (minus 1)! + (dots (1- (logcount (* times children)))) + ;; The remaining missing multiplicator to scale the notes by + ;; times * children + (mult (/ (* times children (ash 1 dots)) (1- (ash 2 dots)))) (shift (- (ly:intlog2 (floor mult)))) (note-duration (first-note-duration r)) (duration-log (if (ly:duration? note-duration) @@ -277,20 +287,10 @@ through MUSIC." (set! (ly:music-property r 'tremolo-type) tremolo-type) (if (not (integer? mult)) (ly:warning (_ "invalid tremolo repeat count: ~a") times)) - (if (memq 'sequential-music (ly:music-property main 'types)) - ;; \repeat "tremolo" { c4 d4 } - (let ((children (length (ly:music-property main 'elements)))) - - ;; fixme: should be more generic. - (if (and (not (= children 2)) - (not (= children 1))) - (ly:warning (_ "expecting 2 elements for chord tremolo, found ~a") children)) - (ly:music-compress r (ly:make-moment 1 children)) - (shift-duration-log r - (if (= children 2) (1- shift) shift) - dots)) - ;; \repeat "tremolo" c4 - (shift-duration-log r shift dots))) + ;; Adjust the time of the notes + (ly:music-compress r (ly:make-moment 1 children)) + ;; Adjust the displayed note durations + (shift-duration-log r shift dots)) r))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -521,8 +521,8 @@ OTTAVATION to `8va', or whatever appropriate." ;;; Used for calls that include beat-grouping setting (define-public (set-time-signature num den . rest) "Set properties for time signature @var{num/den}. -If @var{rest} is present, it is used to make a default -@code{beamSetting} rule." +If @var{rest} is present, it is used to set +@code{beatStructure}." (ly:export (apply make-beam-rule-time-signature-set (list num den rest)))) @@ -530,30 +530,32 @@ If @var{rest} is present, it is used to make a default "Implement settings for new time signature. Can be called from either make-time-signature-set (used by \time in parser) or set-time-signature (called from scheme code -included in .ly file." - - (define (make-default-beaming-rule context) - (override-property-setting - context - 'beamSettings - (list (cons num den) 'end) - (list (cons '* (car rest))))) - - (let* ((set1 (make-property-set 'timeSignatureFraction (cons num den))) - (beat (ly:make-moment 1 den)) - (len (ly:make-moment num den)) - (set2 (make-property-set 'beatLength beat)) - (set3 (make-property-set 'measureLength len)) - (beaming-rule - (if (null? rest) - '() - (list (make-apply-context make-default-beaming-rule)))) - (output (cons* set1 set2 set3 beaming-rule))) - (descend-to-context - (context-spec-music - (make-sequential-music output) - 'Timing) - 'Score))) +included in .ly file)." + + (let ((m (make-music 'ApplyContext))) + (define (make-time-settings context) + (let* ((fraction (cons num den)) + (time-signature-settings (ly:context-property context 'timeSignatureSettings)) + (my-base-fraction (base-fraction fraction time-signature-settings)) + (my-beat-structure (if (null? rest) + (beat-structure my-base-fraction + fraction + time-signature-settings) + (car rest))) + (beaming-exception + (beam-exceptions fraction time-signature-settings)) + (new-measure-length (ly:make-moment num den))) + (ly:context-set-property! context 'timeSignatureFraction fraction) + (ly:context-set-property! + context 'baseMoment (fraction->moment my-base-fraction)) + (ly:context-set-property! context 'beatStructure my-beat-structure) + (ly:context-set-property! context 'beamExceptions beaming-exception) + (ly:context-set-property! context 'measureLength new-measure-length))) + (set! (ly:music-property m 'procedure) make-time-settings) + (descend-to-context + (context-spec-music m 'Timing) + 'Score))) + (define-public (make-mark-set label) "Make the music for the \\mark command." diff --git a/scm/output-svg.scm b/scm/output-svg.scm index 9004694a05..654c3a36a1 100644 --- a/scm/output-svg.scm +++ b/scm/output-svg.scm @@ -384,8 +384,7 @@ (* (* x-radius x-radius) (* (sin angle) (sin angle))))))) (let* - ((dummy (format #t "INFO XR ~a YR ~a SA ~a EA ~a\n" x-radius y-radius start-angle end-angle)) - (new-start-angle (* PI-OVER-180 (angle-0-360 start-angle))) + ((new-start-angle (* PI-OVER-180 (angle-0-360 start-angle))) (start-radius (make-ellipse-radius x-radius y-radius new-start-angle)) (new-end-angle (* PI-OVER-180 (angle-0-360 end-angle))) (end-radius (make-ellipse-radius x-radius y-radius new-end-angle)) @@ -393,8 +392,7 @@ (x-end (- (* end-radius (cos new-end-angle)) (* start-radius (cos new-start-angle)))) (y-end (- (* end-radius (sin new-end-angle)) - (* start-radius (sin new-start-angle)))) - (dummy (format #t "INFO NSA ~a SR ~a NEA ~a ER ~a\n" new-start-angle start-radius new-end-angle end-radius))) + (* start-radius (sin new-start-angle))))) (if (and (< (abs x-end) epsilon) (< (abs y-end) epsilon)) (entity 'ellipse "" @@ -678,4 +676,8 @@ (ec 'a))) (define (utf-8-string pango-font-description string) - (dispatch `(fontify ,pango-font-description ,(entity 'tspan string)))) + (let ((escaped-string (string-regexp-substitute + "<" "<" + (string-regexp-substitute "&" "&" string)))) + (dispatch `(fontify ,pango-font-description + ,(entity 'tspan escaped-string))))) diff --git a/scm/parser-clef.scm b/scm/parser-clef.scm index 2f17701d46..757a1876de 100644 --- a/scm/parser-clef.scm +++ b/scm/parser-clef.scm @@ -113,7 +113,7 @@ (let ((e '()) (c0 0) (oct 0) - (match (string-match "^(.*)([_^])([0-9]+)$" clef-name))) + (match (string-match "^(.*)([_^])([1-9][0-9]*)$" clef-name))) (if match (begin (set! clef-name (match:substring match 1)) diff --git a/scm/time-signature-settings.scm b/scm/time-signature-settings.scm new file mode 100644 index 0000000000..dbca769a1c --- /dev/null +++ b/scm/time-signature-settings.scm @@ -0,0 +1,299 @@ +;;;; This file is part of LilyPond, the GNU music typesetter. +;;;; +;;;; Copyright (C) 2009--2010 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 +;;;; 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 . + +;;; specify time signature default settings + +;;; format: +;;; +;;; alist of +;;; (time-signature . default-properties) entries. +;;; +;;; where default-properties is an alist containing information about the +;;; time signature. Each default-properties set can contain the +;;; following entries: +;;; +;;; (baseMoment . (numerator . denominator)) +;;; (beatStructure . structure-list) +;;; (beamExceptions . (alist of beam exceptions that don't follow beats)) +;;; +;;; The alist of beam exceptions has the following entries: +;;; +;;; (end . grouping-rules) +;;; (subdivide . grouping-rules) (not yet implemented, reserved for future use) +;;; +;;; grouping-rules is an alist containing (beam-type . grouping-list) entries +;;; +;;; beam-type is (numerator . denominator) +;;; grouping-list is a list that specifies the +;;; number of stems of the given duration that are grouped in a beamed unit. +;;; For an exception, the duration used is beam-type. For measureBeats, +;;; the duration used is baseMoment. +;;; +;;; If an exception is specified for a given beam-type, it will apply to all +;;; beams of shorter durations that don't have an individual exception, so +;;; ((1 . 8) . (3 3 2)) +;;; will cause all primary beams to be broken at 3/8, 5/8, and 8/8. +;;; +;;; ((1. 32) . (16 8 4 4)) +;;; will cause all 1/32, 1/64, and 1/128 beams to be broken at 1/2, 3/4, +;;; 7/8, and 8/8. +;;; +;;; If no values are given for baseMoment and measureBeats, default values +;;; will be assigned: +;;; baseMoment gets the value (ly:make-moment 1 time-signature-denominator) +;;; beatStructure gets a list of (3 3 3 ...), where the number of entries is the +;;; number of beats, each containing 3 base-moments, if the time +;;; signature numerator is greater than 3 and divisible by 3, and +;;; a list of (1 1 1 ...), where the number of entries is the +;;; number of base moments in a measure otherwise. +;;; +;;; If no value is given for beatCombinations, no beats will be combined without +;;; beamExceptions rules. +;;; +;;; NOTE: numerator is kept in beam-type because of +;;; tuplets, e.g. (2 . 24) = (2 . 3) * (1 . 8) +;;; for eighth-note triplets. + +(define-public default-time-signature-settings + '( + ;; in 2/2 time: + ;; use defaults, but end beams with 32nd notes each 1 4 beat + ((2 . 2) . + ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8)))))))) + + ;; in 2/4, 2/8 and 2/16 time: + ;; use defaults, so no entries are necessary + + ;; in 3 2 time: + ;; use defaults, but end beams with 32nd notes and higher each 1 4 beat + + ((3 . 2) . + ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8 8 8)))))))) + + ;; in 3 4 time: + ;; use defaults, but combine all beats into a unit if possible + ;; + ;; set all beams to end on beats, but 1 8 to beam entire measure + ;; in order to avoid beaming every beat for entier measure, we set + ;; triplets back to every beat. + ((3 . 4) . + ((beamExceptions . ((end . (((1 . 8) . (6)) + ((1 . 12) . (3 3 3)))))))) + + ;; in 3 8 time: + ;; beam entire measure together + ((3 . 8) . ((beamExceptions . ((end . (((1 . 8) . (3)))))))) + + ;; in 3 16 time: + ;; use defaults -- no entries necessary + + ;; in 4 2 time: + ;; use defaults, but end beams with 16th notes or finer each 1 4 beat + ((4 . 2) . + ((beamExceptions . ((end . (((1 . 16) . (4 4 4 4 4 4 4 4)))))))) + + ;; in 4 4 (common) time: + ;; use defaults, but combine beats 1,2 and 3,4 if only 8th notes + ;; NOTE: Any changes here need to be duplicated in + ;; ly/engraver-init.ly where the default time signature is set + ;; are set + ((4 . 4) . + ((beamExceptions . ((end . (((1 . 8) . (4 4)) + ((1 . 12) . (3 3 3 3)))))))) + + ;; in 4/8 time: + ;; combine beats 1 and 2, so beam in 2 + ((4 . 8) . ((beatStructure . (2 2)))) + + ;; in 4/8 and 4/16 time: + ;; use defaults, so no entries necessary + + ;; in 6 4 time: + ;; use defaults, but end beams with 32nd or finer each 1/4 beat + ((6 . 4) . + ((beamExceptions . ((end . (((1 . 16) . (4 4 4 4 4 4)))))))) + + ;; in 6 8 time: + ;; use defaults, but end beams with 32nd or finer each 1 8 beat + ((6 . 8) . + ((beamExceptions . ((end . (((1 . 32) . (4 4 4 4 4 4)))))))) + + ;; in 6 16 time: + ;; use defaults, so no entry necessary + + ;; in 9 4 time: + ;; use defaults, but end beams with 32nd or finer each 1 4 beat + ((9 . 4) . + ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8 8 8 8 8)))))))) + + ;; in 9 8 time + ;; use defaults, but end beams with 32nd notes each 1 8 beat + ((9 . 8) . + ((beamExceptions . ((end . (((1 . 32) . (4 4 4 4 4 4 4 4 4)))))))) + + ;; in 9 16 time + ;; use defaults, so no entry necessary + + ;; in 12 4 time: + ;; use defaults, but end beams with 32nd or finer notes each 1 4 beat + ((12 . 4) . + ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8 8 8 8 8 8 8 8 8)))))))) + + ;; in 12 8 time: + ;; use defaults, but end beams with 32nd notes each 1 8 beat + ((12 . 8) . + ((beamExceptions . ((end . (((1 . 32) . (4 4 4 4 4 4 4 4 4 4 4 4)))))))) + + ;; in 12 16 time: + ;; use defaults; no entry needed + + ;; in 5 8 time: + ;; default: group (3 2) + ((5 . 8) . + ((baseMoment . (1 . 8)) + (beatStructure . (3 2)))) + + ;; in 8 8 time: + ;; default: group (3 3 2) + ((8 . 8) . + ((baseMoment . (1 . 8)) + (beatStructure . (3 3 2)))) + + )) ; end of alist definition + +;;; +;;; Accessor and constructor functions +;;; + +(define (get-setting my-symbol time-signature time-signature-settings) + "Get setting @code{my-symbol} for @code{time-signature} from +@code{time-signature-settings}." + (let ((my-time-signature-settings + (assoc-get time-signature time-signature-settings '()))) + (assoc-get my-symbol my-time-signature-settings '()))) + +(define-public (make-setting base-fraction + beat-structure + beam-exceptions) + (list + (cons 'baseMoment base-fraction) + (cons 'beatStructure beat-structure) + (cons 'beamExceptions beam-exceptions))) + +(define-public (base-fraction time-signature time-signature-settings) + "Get @code{baseMoment} fraction value for @code{time-signature} from +@code{time-signature-settings}." + (let ((return-value (get-setting 'baseMoment + time-signature + time-signature-settings))) + (if (null? return-value) + (cons 1 (cdr time-signature)) + return-value))) + +(define-public (beat-structure base-fraction time-signature time-signature-settings) + "Get beatStructure value in @code{base-fraction} units +for @code{time-signature} from +@code{time-signature-settings}." + (define (fraction-divide numerator denominator) + (/ (* (car numerator) (cdr denominator)) + (* (cdr numerator) (car denominator)))) + + (let ((return-value (get-setting 'beatStructure + time-signature + time-signature-settings))) + (if (null? return-value) + ;; calculate default beatStructure + (let* ((numerator (car time-signature)) + (group-size (if (and (> numerator 3) + (zero? (remainder numerator 3))) + 3 + 1)) + (beat-length (cons (* group-size (car base-fraction)) + (cdr base-fraction))) + (beat-count (fraction-divide time-signature beat-length))) + (if (integer? beat-count) + (make-list beat-count group-size) + '())) + ;; use value obtained from time-signature-settings + return-value))) + +(define-public (beam-exceptions time-signature time-signature-settings) + "Get beamExceptions value for @code{time-signature} from +@code{time-signature-settings}." + (get-setting 'beamExceptions time-signature time-signature-settings)) + + +;;; Functions for overriding time-signature settings +;;; + +(define (override-property-setting context property setting value) + "Like the C++ code that executes \\override, but without type +checking. " + (begin + (revert-property-setting context property setting) + (ly:context-set-property! + context + property + (cons (cons setting value) (ly:context-property context property))))) + +(define (revert-property-setting context property setting) + "Like the C++ code that executes \revert, but without type +checking. " + + (define (revert-member alist entry new) + "Return ALIST, with ENTRY removed. ALIST is not modified, instead +a fresh copy of the list-head is made." + (cond + ((null? alist) new) + ((equal? (car alist) entry) (revert-member (cdr alist) entry new)) + (else (revert-member (cdr alist) entry (cons (car alist) new))))) + + (ly:context-set-property! + context property + (revert-member (ly:context-property context property) setting '()))) + +(define-public (override-time-signature-setting time-signature setting . rest) + "Override the time signature settings for the context in @var{rest}, +with the new setting alist @var{setting}. " + (context-spec-music + (make-apply-context + (lambda (c) (override-property-setting + c + 'timeSignatureSettings + time-signature + setting))) + (if (and (pair? rest) (symbol? (car rest))) + (car rest) + 'Voice))) + +(define-public (score-override-time-signature-setting + time-signature setting) + (override-time-signature-setting + time-signature setting 'Score)) + +(define-public (revert-time-signature-setting + time-signature . rest) + (context-spec-music + (make-apply-context + (lambda (c) + (revert-property-setting + c + 'timeSignatureSettings + time-signature))) + (if (and (pair? rest) (symbol? (car rest))) + (car rest) + 'Voice))) diff --git a/scripts/build/html-to-texi.py b/scripts/build/html-to-texi.py index 520c3ecce8..a7005ec150 100644 --- a/scripts/build/html-to-texi.py +++ b/scripts/build/html-to-texi.py @@ -53,7 +53,7 @@ body = re.sub ('(?ms)
(.*?)(
)', r'\1', body) body = re.sub ('(?ms)(.*?)()', r'@strong{\1}', body) body = re.sub ('(?ms)(.*?)()', r'@emph{\1}', body) -body = re.sub ('(?ms) ', r'@tie{}', body) +body = re.sub ('(?ms) ', r'@tie{}', body) body = re.sub ('(?ms)\cite{(.*?)}', r'[\1]', body) body = re.sub ('(?ms)\cite{(.*?)}', r'[\1]', body) diff --git a/scripts/build/lys-to-tely.py b/scripts/build/lys-to-tely.py index 0eb12047e6..c4e387547b 100644 --- a/scripts/build/lys-to-tely.py +++ b/scripts/build/lys-to-tely.py @@ -27,6 +27,7 @@ Options: options -o, --output=NAME write tely doc to NAME -t, --title=TITLE set tely doc title TITLE + -a, --author=AUTHOR set tely author AUTHOR --template=TEMPLATE use TEMPLATE as Texinfo template file, instead of standard template; TEMPLATE should contain a command '%(include_snippets)s' to tell where to insert LY-FILEs. When this @@ -38,10 +39,11 @@ def help (text): sys.exit (0) (options, files) = getopt.getopt (sys.argv[1:], 'f:hn:t:', - ['fragment-options=', 'help', 'name=', 'title=', 'template=']) + ['fragment-options=', 'help', 'name=', 'title=', 'author=', 'template=']) name = "ly-doc" title = "Ly Doc" +author = "Han-Wen Nienhuys and Jan Nieuwenhuizen" template = '''\input texinfo @setfilename %%(name)s.info @settitle %%(title)s @@ -55,7 +57,7 @@ template = '''\input texinfo @c fool ls-latex @ignore -@author Han-Wen Nienhuys and Jan Nieuwenhuizen +@author %%(author)s @title %%(title)s @end ignore @@ -71,14 +73,16 @@ for opt in options: o = opt[0] a = opt[1] if o == '-h' or o == '--help': - # We can't use vars () inside a function, as that only contains all - # local variables and none of the global variables! Thus we have to + # We can't use vars () inside a function, as that only contains all + # local variables and none of the global variables! Thus we have to # generate the help text here and pass it to the function... help (help_text % vars ()) elif o == '-n' or o == '--name': name = a elif o == '-t' or o == '--title': title = a + elif o == '-a' or o == '--author': + author = a elif o == '-f' or o == '--fragment-options': fragment_options = a elif o == '--template': @@ -87,11 +91,26 @@ for opt in options: raise Exception ('unknown option: ' + o) texi_file_re = re.compile ('.*\.i?te(ly|xi)$') +html_file_re = re.compile ('.*\.i?htm(l)?$') +xml_file_re = re.compile ('.*\.i?xml$') +tex_file_re = re.compile ('.*\.i?(la)?tex$') +pdf_file_re = re.compile ('.*\.i?pdf$') def name2line (n): if texi_file_re.match (n): # We have a texi include file, simply include it: s = r"@include %s" % os.path.basename (n) + elif (html_file_re.match (n) or pdf_file_re.match (n) or + xml_file_re.match (n) or tex_file_re.match (n)): + s = r""" +@ifhtml +@html +%s +
+@end html +@end ifhtml +""" % (os.path.basename (n), os.path.basename (n)) + return s else: # Assume it's a lilypond file -> create image etc. s = r""" diff --git a/scripts/musicxml2ly.py b/scripts/musicxml2ly.py index 88058b17d0..7e8dbbae02 100644 --- a/scripts/musicxml2ly.py +++ b/scripts/musicxml2ly.py @@ -165,7 +165,7 @@ compoundMeter = \set Timing.measureLength = $mlen \set Timing.timeSignatureFraction = #(cons (ly:moment-main-numerator $mlen) (ly:moment-main-denominator $mlen)) -\set Timing.beatLength = $beat +\set Timing.baseMoment = $beat % TODO: Implement beatGrouping and auto-beam-settings!!! #} )) diff --git a/stepmake/autogen.sh b/stepmake/autogen.sh index 2fd8bebd5a..34c022e082 100755 --- a/stepmake/autogen.sh +++ b/stepmake/autogen.sh @@ -18,26 +18,6 @@ if [ ! -f autogen.sh -o stepmake/autogen.sh -nt autogen.sh ]; then exec ./autogen.sh "$@" fi -# Be paranoid: check for autoconf >= 2.50 -# Some setups have both autoconf 2.13 and 2.5x available through -# a wrapper script: /usr/bin/autoconf. -# This wrapper may incorrectly autoselect autoconf 2.50, but it -# advertises itself as autoconf 2.13. -# If you have such a setup, invoke this script as: -# autoconf=autoconf2.50 ./autogen.sh -for i in autoconf2.50 autoconf-2.50 autoconf false; do - version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'` - if test "0$version" -ge 250; then - autoconf=$i - break - fi -done - -if test -z "$autoconf"; then - echo "ERROR: Please install autoconf 2.50 or newer" - exit 1 -fi - for i in $srcdir/configure.in #`find $srcdir -name configure.in -print` do dir=`dirname $i` @@ -45,8 +25,11 @@ do ( cd $dir echo "Running autoconf ..." - $autoconf + autoconf || exit 1 ) + # Autoconf automatically checks its own minimum required + # version, and it aborts when the check fails. + test "$?" -eq 1 && exit 1 done #conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c diff --git a/stepmake/bin/config.sub b/stepmake/bin/config.sub index ae35431611..204218c073 100755 --- a/stepmake/bin/config.sub +++ b/stepmake/bin/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. -timestamp='2010-03-22' +timestamp='2010-05-21' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -124,8 +124,9 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os @@ -1307,7 +1308,8 @@ case $os in | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \