Trevor Daniels <t.daniels@treda.co.uk>
Trevor Daniels <Trevor@Trevor-Laptop>
Valentin Villenave <valentin@localhost.(none)>
+Valentin Villenave <valentin@villenave.net>
Valentin Villenave <v.villenave@gmail.com>
Vegard Nossum <vegard@peltkore.net>
Werner Lemberg <wl>
--exclude "snippets/*" ????*/*
@end example
+- check for altered regtests, and document as necessary. (update
+ tags as appropriate)
+
+@example
+git diff -u -r release/2.12.0-1 -r release/2.13.13-1 input/regression/
+@end example
+
News:
@c long filenames like "scripts_auxiliar_lily-git.tcl"
@example
-@uref{http://git.sv.gnu.org/cgit/lilypond.git/plain/scripts/auxiliar/lily-git.tcl}.
+@uref{http://git.sv.gnu.org/cgit/lilypond.git/plain/scripts/auxiliar/lily-git.tcl}
@end example
To run the program from the command line, navigate to the
@end example
@end itemize
+@knownissues
+Encryption protocols, including ssh, generally do not permit packet
+fragmentation to avoid introducing a point of insecurity. This
+means that the maximum packet size must not exceed the smallest
+MTU (Maximum Transmission Unit) set in the routers along the path.
+This smallest MTU is determined by a procedure during call set-up
+which relies on the transmission over the path of ICMP packets.
+If any of the routers in the path block ICMP packets this mechanism
+fails, resulting in the possibility of packets being transmitted
+which exceed the MTU of one of the routers. If this happens the
+packet is discarded, causing the ssh session to hang, timeout or
+terminate with the error message
+
+@example
+ssh: connect to host <host ip addr> port 22: Bad file number
+fatal: The remote end hung up unexpectedly
+@end example
+
+depending on precisely when in the proceedings the first large
+packet is transmitted. Most routers on the internet have MTU
+set to 1500, but routers installed in homes to connect via
+broadband may use a slightly smaller MTU for efficient transmission
+over ATM. If this problem is encountered a possible work-around is
+to set the MTU in the local router to 1500.
+
@node Git on Windows
@section Git on Windows
diff -u $DEST/extract_texi_filenames.py $GIT/scripts/build/extract_texi_filenames.py
diff -u $DEST/create-version-itexi.py $GIT/scripts/build/create-version-itexi.py
diff -u $DEST/create-weblinks-itexi.py $GIT/scripts/build/create-weblinks-itexi.py
+diff -u $DEST/mass-link.py $GIT/scripts/build/mass-link.py
+diff -u $DEST/website_post.py $GIT/scripts/build/website_post.py
@end verbatim
If the changes look ok, make them trusted:
cp $GIT/scripts/build/extract_texi_filenames.py $DEST/extract_texi_filenames.py
cp $GIT/scripts/build/create-version-itexi.py $DEST/create-version-itexi.py
cp $GIT/scripts/build/create-weblinks-itexi.py $DEST/create-weblinks-itexi.py
+cp $GIT/scripts/build/mass-link.py $DEST/mass-link.py
+cp $GIT/scripts/build/website_post.py $DEST/website_post.py
@end verbatim
Build the website:
* Ensayo:: Ensayo.
* Notación:: Referencia.
* Utilización:: Utilización.
-* Fragmentos de código:: Fragmentos de código.
+* Fragmentos:: Fragmentos de código.
* FAQ:: Preguntas frecuentes.
* Web:: Web.
* Cambios:: Noticias.
@divEnd
-@node Todo
-@unnumberedsec Todo
+@node Todos
+@unnumberedsec Todos
@translationof All
@divClass{column-left-top}
@end menu
@node The LilyPond story
-@unnumberedsec The LilyPond story
+@section The LilyPond story
Long before LilyPond had been used to engrave beautiful performance
scores, before it could create university course notes or even simple
@end iftex
@node Engraving details
-@unnumberedsec Engraving details
+@section Engraving details
@cindex engraving
@cindex typography, music
@node Automated engraving
-@unnumberedsec Automated engraving
+@section Automated engraving
@cindex engraving, automated
@cindex automated engraving
@node What symbols to engrave?
-@unnumberedsec What symbols to engrave?
+@section What symbols to engrave?
@cindex engraving
@cindex typography
@node Music representation
-@unnumberedsec Music representation
+@section Music representation
@cindex syntax
@cindex recursive structures
@node Example applications
-@unnumberedsec Example applications
+@section Example applications
@cindex simple examples
@cindex examples, simple
@page
@node Appendix
-@unnumberedsec Appendix
+@section Appendix
This appendix contains four reference engravings and two
software-engraved versions of Bach's Fugue in G minor from the
Michael Käppler,
Marek Klein,
Kieren MacMillan,
+Thomas Morgan,
+Boris Shingarov,
Andrew Wilson
@c no comma for last entry
@c use commas not colons
+Dénes Harmath,
Jean-Charles Malahieude,
@c @email{lolyfan@@wanadoo.fr},
Till Rettig,
@c NOTE Tuplet brackets collide if notes are high on staff
@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c]}
+\times 2/3 { c8[ c c] }
\once \override TupletNumber
#'text = #tuplet-number::calc-fraction-text
\times 2/3 {
c[ c]
\once \override TupletNumber #'transparent = ##t
\times 2/3 { c8[ c c] }
-\times 2/3 { c8[ c c]}
+ \times 2/3 { c8[ c c] }
}
@end lilypond
{
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 b8 b[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
{
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 b8 b[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
r4 b8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ b4[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
r4 b8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
+ b4[( g]) g
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- g[( e]) e d[( f]) a |
- a g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
r4 b8
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e])
+ b4[( g]) g
+ g4[( e])
% Revert thickness of all following slurs to default of 1.2
\revert Slur #'thickness
- e d[( f]) a |
- a g
+ e4 d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
{
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 b8 b[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
\override LyricText #'font-shape = #'italic
{
\time 12/16
\override BarLine #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'break-visibility = #'#(#f #f #f)
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.TimeSignature #'transparent = ##t
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.TimeSignature #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'color = #white
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'color = #(x11-color 'white)
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'color = #(rgb-color 1 1 1)
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
\override Voice.NoteHead #'color = #(x11-color 'grey85)
\override Voice.Stem #'color = #(x11-color 'grey85)
\override Staff.BarLine #'color = #(x11-color 'grey10)
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
- e4 r8
- <<
- { f c c }
- \new Staff \with {
- alignAboveContext = #"main" }
- { f8 f c }
- >>
- r4 |
- }
- }
+ \relative g' {
+ r4 g8 g c4 c8 d
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main" }
+ { f8 f c }
+ >>
+ r4
+ }
+}
@end lilypond
Ossia are normally written without clef and time signature, and
\override TextScript #'font-family = #'typewriter
\override TextScript #'font-shape = #'upright
\override Script #'padding = #-0.1
- a\ictus_"ictus " \break
- a\circulus_"circulus " \break
- a\semicirculus_"semicirculus " \break
- a\accentus_"accentus " \break
+ a\ictus_"ictus " \bar "" \break
+ a\circulus_"circulus " \bar "" \break
+ a\semicirculus_"semicirculus " \bar "" \break
+ a\accentus_"accentus " \bar "" \break
\[ a_"episema" \episemInitium \pes b \flexa a b \episemFinis \flexa a \]
}
}
@end lilypond
-@c @seealso
-@c TODO: nothing here yet ...
+Snippets:
+@rlsr{Ancient notation}.
+
+Internals Reference:
+@rinternals{Episema},
+@rinternals{EpisemaEvent},
+@rinternals{Episema_engraver},
+@rinternals{Script},
+@rinternals{ScriptEvent},
+@rinternals{Script_engraver}.
@knownissues
Some articulations are vertically placed too closely to the
corresponding note heads.
-The episema line is not displayed in many cases. If it is displayed,
-the right end of the episema line is often too far to the right.
-
@c {{{2Augmentum dots (@emph{morae})
@node Augmentum dots (@emph{morae})
@cindex prallmordent
@cindex prall, up
@cindex prall, down
+@cindex mordent, up
+@cindex mordent, down
@cindex thumb marking
@cindex segno
@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 \segno
+@funindex \coda
+@funindex \varcoda
+
+
@funindex -
A variety of symbols that denote articulations, ornamentations,
Crescendos and decrescendos can be engraved as textual markings
instead of hairpins. Dashed lines are printed to indicate their
-extent. The built-in commands @code{\crescTextCresc},
-@code{\dimTextDecresc}, @code{\dimTextDecr}, and @code{\dimTextDim}
-will tell LilyPond to use such textual marks instead of hairpins
+extent. The built-in commands @code{\crescTextCresc},
+@code{\dimTextDecresc}, @code{\dimTextDecr}, and @code{\dimTextDim}
+will tell LilyPond to use such textual marks instead of hairpins
for all subsequent @code{\<} and @code{\>} commands. The corresponding
@code{\crescHairpin} and @code{\dimHairpin} commands will revert
to hairpins again:
especially common in popular music to use chord diagrams above
a staff of traditional notation. The guitar and the banjo are
transposing instruments, sounding an octave lower than written.
-Scores for these instruments should use the @code{"treble_8"} clef.
+Scores for these instruments should use the @code{"treble_8"} clef (or
+@code{\transposition c} to get correct MIDI output).
Some other elements pertinent to fretted string instruments
are covered elsewhere:
@ref{Writing music in parallel},
@ref{Arpeggio},
@ref{List of articulations},
-@ref{Clef}.
+@ref{Clef},
+@ref{Instrument transpositions}.
@node String number indications
* Extracting fragments of music::
* Skipping corrected music::
* Alternative output formats::
+* Replacing the notation font::
@end menu
@node Extracting fragments of music
lilypond}.
+@node Replacing the notation font
+@subsection Replacing the notation font
+
+FIXME stub.
+
+
@node MIDI output
@section MIDI output
\header {
lsrtags = "keyboards"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los símbolos específicos de acordeón discanto se escriben mediante
@code{\\markup}. Se puede trucar la colocación vertical de los
\header {
lsrtags = "chords, ancient-notation, contexts-and-engravers"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "pitches, staff-notation, vocal-music"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Añadir un ámbito por voz"
texidoces = "
Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
\header {
lsrtags = "staff-notation, contexts-and-engravers, breaks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "staff-notation, contexts-and-engravers"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede añadir (posiblemente de forma temporal) un pentagrama
nuevo una vez que la pieza ha comenzado.
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Para añadir indicaciones de línea divisoria dentro del contexto de
los nombres de acorde @code{ChordNames}, incluya el grabador
\header {
lsrtags = "rhythms, expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La sintaxis de LilyPond puede implicar muchas colocaciones poco
comunes para los paréntesis, corchetes, etc, que a veces se tienen
\header {
lsrtags = "rhythms, percussion"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Mediante la utilización de las potentes herramientas preconfiguradas
como la función @code{\\drummode} y el contexto @code{DrumStaff}, la
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La función @code{\\parenthesize} es un truco especial que encierra
objetos entre paréntesis. El grob asociado es @code{ParenthesesItem}.
\header {
lsrtags = "text, titles"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Con algo de código de Scheme, se puede añadir fácilmente la fecha
actual a una partitura.
\header {
lsrtags = "repeats"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
El grabador @code{Volta_engraver} reside de forma predeterminada
dentro del contexto de @code{Score}, y los corchetes de la repetición
\header {
lsrtags = "simultaneous-notes"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Voces adicionales para evitar colisiones"
texidoces = "
En ciertos casos de polifonía compleja, se necesitan voces adicionales
\header {
lsrtags = "text, vocal-music, spacing"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Este fragmento de código muestra cómo situar la línea de base de la
letra más cerca del pentagrama.
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Puede ser necesario trucar la propiedad
@code{shortest-duration-space} para poder ajustar el tamaño de las
\header {
lsrtags = "text, paper-and-layout, titles"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La alineación horizontal de los nombres de instrumento se puede
trucar modificando la propiedad @code{Staff.InstrumentName
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los números de compás se alinean de forma predeterminada por la
\header {
lsrtags = "text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "editorial-annotations, fretted-strings, spacing"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las cifras de digitación orientadas verticalmente se colocan de forma
\header {
lsrtags = "pitches, vocal-music"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Ámbitos con varias voces"
texidoces = "
La adición del grabador @code{Ambitus_engraver} al contexto de
\header {
lsrtags = "editorial-annotations, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
De forma predeterminada se añaden corchetes de análisis sencillos
debajo del pentagrama. El ejemplo siguiente muestra una manera de
\header {
lsrtags = "ancient-notation"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "ancient-notation, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Este ejemplo muestra cómo hacer una transcripción moderna de canto
gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza
\header {
lsrtags = "ancient-notation, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Al transcribir música mensural, es útil un «incipit» al compienzo
de la pieza para indicar la tonalidad y el tempo
\header {
lsrtags = "ancient-notation"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las indicaciones de compás también se pueden grabar en estilo antiguo.
\header {
lsrtags = "pitches, editorial-annotations"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Aplicar estilos de cabeza según la nota de la escala"
texidoces = "
La propiedad @code{shapeNoteStyles} se puede usar para definir varios
\header {
lsrtags = "world-music"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden subdividir las barras automáticamente. Estableciendo la
propiedad @code{subdivideBeams}, las barras se subdividen en
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las reglas de final de barra especificadas en el contexto
@code{Score} se aplican a todos los pentagramas, pero se pueden
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Normalmente están prohibidos los saltos de línea si las barras
atraviesan las líneas divisorias. Se puede cambiar este
\header {
lsrtags = "editorial-annotations, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La instrucción @code{\\whiteout} intercala un rectángulo blanco
debajo de un elemento de marcado. Este rectángulo blanco no tapa
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "expressive-marks, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "expressive-marks, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Este ejemplo proporciona una función para tipografiar un regulador con
texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra
\header {
lsrtags = "expressive-marks, unfretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Para hacer más pequeño el círculo de @code{\\flageolet} (armónico)
utilice la siguiente función de Scheme.
\header {
lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden modificar notas individuales de un acorde con la instrucción
@code{\\tweak}, alterando la propiedad @code{font-size}.
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se insertan automáticamente barras en ángulo cuando se detecta un
intervalo muy grande entre las notas. Se puede hacer un ajuste
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede establecer el separador entre las distintas partes del
nombre de un acorde para que sea cualquier elemento de marcado.
\header {
lsrtags = "rhythms, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Cambiar la forma de los silencios multicompás"
texidoces = "
Si hay diez compases de silencio o menos, se imprime en el pentagrama
\header {
lsrtags = "contexts-and-engravers, midi"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Al producir una salida MIDI, el comportamiento predeterminado es
que cada pentagrama representa un canal MIDI, con todas las voces
\header {
lsrtags = "simultaneous-notes"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede modificar el texto empleado para los crescendos y
decrescendos modificando las propiedades de contexto
\header {
lsrtags = "expressive-marks, editorial-annotations"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede cambiar el aspecto de las ligaduras de expresión de
continuas a punteadas o intermitentes.
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
El glifo de la marca de respiración se puede ajustar
sobreescribiendo la propiedad de texto del objeto de presentación
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La nomenclatura inglesa (predeterminada) para los acordes del cifrado
americano se puede cambiar por la alemana (@code{\\germanChords}
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "staff-notation, midi"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Para cambiar el tempo en la salida MIDI sin
imprimir nada, hacemos invisible la indicación metronómica:
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La instrucción @code{\\time} establece las propiedades
@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Cambiar el número del grupo especial"
texidoces = "
\header {
lsrtags = "rhythms, contexts-and-engravers"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La propiedad @code{measureLength}, junto con
@code{measurePosition}, determina cuándo es necesario dibujar una
\header {
lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Este tipo de notación se utiliza para el canto de los Salmos, en
que las estrofas no siempre tienen la misma longitud.
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede usar la propiedad @code{chordNameExceptions} para
almacenar una lista de notaciones espaciales para acordes
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La presentación del acorde de séptima mayor se
puede ajustar mediante majorSevenSymbol.
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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.
\header {
lsrtags = "simultaneous-notes, chords, keyboards"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los «clusters» o racimos son un mecanismo para indicar la
interpretación de un ámbito de notas al mismo tiempo.
\header {
lsrtags = "expressive-marks, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più
forte} o @qq{piano subito}). Se pueden producir usando un bloque
\header {
lsrtags = "simultaneous-notes, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La herramienta de combinación de partes ( instrucción
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Indicaciones de compases compuestos"
texidoces = "
Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La agrupación de pulsos dentro de un compás está controlada por la
agrupación predeterminada que se establece en @code{beamSettings}.
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede tipografiar un gissando contemporáneo sin nota final
utilizando una nota oculta y temporalización de cadenza.
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
\header {
lsrtags = "editorial-annotations, chords, keyboards, fretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "expressive-marks, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
El orden vertical que ocupan las inscripciones gráficas está
controlado con la propiedad @code{'script-priority}. Cuanto más
\header {
lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "pitches"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
En una música que tenga muchas apariciones de la
misma secuencia de notas a distintas alturas, podría ser de
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede trazar un símbolo de arpegio entre notas de distintas
voces que están sobre el mismo pentagrama si el grabador
\header {
lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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}
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
cruce entre los pentagramas ajustando la propiedad
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden crear arpegios que se cruzan entre pentagramas dentro de
contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
\header {
lsrtags = "staff-notation"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden crear indicaciones metronómicas nuevas en modo de
marcado, pero no cambian el tempo en la salida MIDI.
\header {
lsrtags = "expressive-marks, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "expressive-marks, text, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "expressive-marks, keyboards, unfretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
En determinadas situaciones es necesario crear ligaduras de
expresión entre notas que están en voces distintas.
\header {
lsrtags = "expressive-marks, text, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan}
permiten la creación de elementos de extensión textuales tan
\header {
lsrtags = "ancient-notation, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden tipografiar «custos» en diferentes estilos.
\header {
lsrtags = "fretted-strings, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden establecer las propiedades de los diagramas de
posiciones de acordes por medio de @code{'fret-diagram-details}.
\header {
lsrtags = "fretted-strings, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden establecer las propiedades de los diagramas de
posiciones a través de @code{'fret-diagram-details}. Para los
\header {
lsrtags = "editorial-annotations"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La dirección predeterminada de las plicas sobre la tercera línea
del pentagrama está determinada por la propiedad
\header {
lsrtags = "fretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden añadir diagramas de posiciones predefinidas para
\header {
lsrtags = "staff-notation, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Si hay un solo pentagrama en un de los tipos de sistema
@code{ChoirStaff} o @code{StaffGroup}, el comportamiento
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "editorial-annotations, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede insertar códico PostScript directamente dentro de un
bloque @code{\\markup}.
\header {
lsrtags = "contexts-and-engravers"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Del problema central de la notación, esto es, crear un determinado
símbolo, se encargan los «plugins» o complementos añadidos. Cada
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Grabado manual de las ligaduras"
texidoces = "
Se pueden grabar a mano las ligaduras modificando la propiedad
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times"
texidoces = "
La propiedad @code{tupletSpannerDuration} establece cuánto debe durar
\new FiguredBass \figuremode {
\set figuredBassAlterationDirection = #RIGHT
\set figuredBassPlusDirection = #RIGHT
- \override VerticalAxisGroup #'minimum-Y-extent = #'()
\override BassFigureAlignment #'stacking-dir = #DOWN
s8 |
s4 <6>4 <_+>4 <6>4 |
\header {
lsrtags = "fretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
En este ejemplo se combinan las digitaciones de la mano izquierda,
indicaciones del número de cuerda y digitaciones de la mano
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Son posibles tanto los corchetes rectos sobre notas sueltas como
extremos de barra sueltos en figuras unidas, con una combinación de
\header {
lsrtags = "simultaneous-notes, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Forzar el desplazamiento horizontal de las notas"
\header {
lsrtags = "pitches"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Este fragmento de código basado en Scheme genera
24 notas aleatorias (o tantas como se necesiten), basándose en la
\header {
lsrtags = "editorial-annotations"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede cambiar el aspecto de las líneas de rejilla
sobreescribiendo algunas de sus propiedades.
\header {
lsrtags = "editorial-annotations"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden trazar líneas verticales normales entre pentagramas para
mostrar la relación entre notas; sin embargo, en caso de música
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los patrones de barrado se pueden alterar con la propiedad
@code{beatGrouping}:
\header {
lsrtags = "rhythms, fretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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.
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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.
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los «incipit» se pueden escribir utilizando el grob del nombre del
instruemento, pero manteniendo independientes las definiciones del
tenorNotes = {
\transpose c' c' {
- \once \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 3)
\clef "treble_8"
R1 |
R1 |
\header {
lsrtags = "keyboards"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Un corchete de arpegio puede indicar que se tienen que tocadr con la
misma mano notas que están en dos pentagramas distintos. Para hacerlo,
\header {
lsrtags = "expressive-marks, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las marcas de cesura se pueden crear sobreescribiendo la propiedad
@code{'text} del objeto @code{BreathingSign}. También está disponible
\header {
lsrtags = "repeats"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
También se pueden imprimir símbolos de porcentaje sueltos. Esto se
hace introduciendo un silencio multicompás con una función de
\header {
lsrtags = "keyboards, percussion, fretted-strings, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Ésta es una plantilla bastante avanzada, para un conjunto de
jazz. Observe que la notación de todos los instrumentos está en
\header {
lsrtags = "expressive-marks, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden aplicar puntas de flecha a los elementos de extensión de
texto y de línea (como el Glissando).
\header {
lsrtags = "text, vocal-music"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La alineación horizontal de la letra se puede ajustar sobreescribiendo
la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
El «Makam» es un tipo de melodía de Turquía que
utiliza alteraciones microtonales de 1/9 de tono. Consulte el
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las ligaduras de expresión se pueden construir con patrones de
\header {
lsrtags = "staff-notation, editorial-annotations"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "repeats, staff-notation, editorial-annotations"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Este fragmento de código proporciona una solución alternativa a la
producción de contadores de compás utilizando repeticiones
\header {
lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La disposición «mensurstriche» en que las líneas divisorias no
están dibujadas sobre los pentagramas, sino entre ellos, se puede
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las abreviaturas se encuentran definidas dentro del archivo
@code{ly/script-init.ly}, donde las variables @code{dashHat},
\header {
lsrtags = "rhythms, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los elementos de marcado aplicados a un silencio multicompás se
centran encima o debajo de éste. Los elementos de marcado extensos
\header {
lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede utilizar la propiedad
@code{systemStartDelimiterHierarchy} para crear grupos de
\new FiguredBass \figuremode {
\set figuredBassAlterationDirection = #RIGHT
\set figuredBassPlusDirection = #RIGHT
- \override VerticalAxisGroup #'minimum-Y-extent = #'()
\override BassFigureAlignment #'stacking-dir = #DOWN
s8 |
s4 <6>4 <_+>4 <6>4 |
tenorNotes = {
\transpose c' c' {
- \once \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 3)
\clef "treble_8"
R1 |
R1 |
--- /dev/null
+\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
+%%%
+#(define (ly:event::in-event-class event class-name)
+ (memq class-name (ly:make-event-class (ly:event-property event 'class))))
+
+#(define (ly:separation-item::add-conditional-item grob grob-item)
+ (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item))
+
+#(define (ly:accidental-placement::accidental-pitch accidental-grob)
+ (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause)
+ 'pitch))
+
+#(define (ly:accidental-placement::add-accidental grob accidental-grob)
+ (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
+%%%
+#(define-class <ambitus> ()
+ (ambitus-line #:accessor ambitus-line)
+ (ambitus-group #:accessor ambitus-group)
+ (ambitus-up-note #:getter ambitus-up-note
+ #:init-form (make <ambitus-note>))
+ (ambitus-down-note #:getter ambitus-down-note
+ #:init-form (make <ambitus-note>))
+ (is-typeset #:accessor ambitus-is-typeset
+ #:init-value #f)
+ (start-c0 #:accessor ambitus-start-c0
+ #:init-value #f)
+ (start-key-sig #:accessor ambitus-start-key-sig
+ #:init-value '()))
+
+#(define-method (ambitus-note (ambitus <ambitus>) direction)
+ (if (= direction UP)
+ (ambitus-up-note ambitus)
+ (ambitus-down-note ambitus)))
+
+#(define-accessor ambitus-head)
+#(define-method (ambitus-head (ambitus <ambitus>) direction)
+ (ambitus-note-head (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-head) (ambitus <ambitus>) direction head)
+ (set! (ambitus-note-head (ambitus-note ambitus direction)) head))
+
+#(define-accessor ambitus-accidental)
+#(define-method (ambitus-accidental (ambitus <ambitus>) direction)
+ (ambitus-note-accidental (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-accidental) (ambitus <ambitus>) direction accidental)
+ (set! (ambitus-note-accidental (ambitus-note ambitus direction)) accidental))
+
+#(define-accessor ambitus-cause)
+#(define-method (ambitus-cause (ambitus <ambitus>) direction)
+ (ambitus-note-cause (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-cause) (ambitus <ambitus>) direction cause)
+ (set! (ambitus-note-cause (ambitus-note ambitus direction)) cause))
+
+#(define-accessor ambitus-pitch)
+#(define-method (ambitus-pitch (ambitus <ambitus>) direction)
+ (ambitus-note-pitch (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-pitch) (ambitus <ambitus>) direction pitch)
+ (set! (ambitus-note-pitch (ambitus-note ambitus direction)) pitch))
+
+#(define-class <ambitus-note> ()
+ (head #:accessor ambitus-note-head
+ #:init-value #f)
+ (accidental #:accessor ambitus-note-accidental
+ #:init-value #f)
+ (cause #:accessor ambitus-note-cause
+ #:init-value #f)
+ (pitch #:accessor ambitus-note-pitch
+ #:init-value #f))
+
+%%%
+%%% Ambitus engraving logics
+%%%
+#(define (make-ambitus translator)
+ (let ((ambitus (make <ambitus>)))
+ (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '()))
+ (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '()))
+ (for-each (lambda (direction)
+ (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '()))
+ (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '()))
+ (group (ambitus-group ambitus)))
+ (set! (ly:grob-parent accidental Y) head)
+ (set! (ly:grob-object head 'accidental-grob) accidental)
+ (ly:axis-group-interface::add-element group head)
+ (ly:axis-group-interface::add-element group accidental)
+ (set! (ambitus-head ambitus direction) head)
+ (set! (ambitus-accidental ambitus direction) accidental)))
+ (list DOWN UP))
+ (set! (ly:grob-parent (ambitus-line ambitus) X) (ambitus-head ambitus DOWN))
+ (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus))
+ (set! (ambitus-is-typeset ambitus) #f)
+ ambitus))
+
+#(define-method (typeset-ambitus (ambitus <ambitus>) translator)
+ (if (not (ambitus-is-typeset 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))
+ (set! (ambitus-is-typeset ambitus) #t))))
+
+#(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
+ (let ((note-event (ly:grob-property note-grob 'cause)))
+ (if (ly:event::in-event-class note-event 'note-event)
+ (let ((pitch (ly:event-property note-event 'pitch)))
+ (if (or (not (ambitus-pitch ambitus DOWN))
+ (ly:pitch<? pitch (ambitus-pitch ambitus DOWN)))
+ (begin ;; update down pitch
+ (set! (ambitus-pitch ambitus DOWN) pitch)
+ (set! (ambitus-cause ambitus DOWN) note-event)))
+ (if (or (not (ambitus-pitch ambitus UP))
+ (ly:pitch<? (ambitus-pitch ambitus UP) pitch))
+ (begin ;; update up pitch
+ (set! (ambitus-pitch ambitus UP) pitch)
+ (set! (ambitus-cause ambitus UP) note-event)))))))
+
+#(define-method (finalize-ambitus (ambitus <ambitus>) translator)
+ (if (and (ambitus-pitch ambitus UP) (ambitus-pitch ambitus DOWN))
+ (let ((accidental-placement (ly:engraver-make-grob translator
+ 'AccidentalPlacement
+ (ambitus-accidental ambitus DOWN))))
+ (for-each (lambda (direction)
+ (let ((pitch (ambitus-pitch ambitus direction)))
+ (set! (ly:grob-property (ambitus-head ambitus direction) 'cause)
+ (ambitus-cause ambitus direction))
+ (set! (ly:grob-property (ambitus-head ambitus direction) 'staff-position)
+ (+ (ambitus-start-c0 ambitus)
+ (ly:pitch-steps pitch)))
+ (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)
+ (ly:grob-suicide! (ambitus-accidental ambitus direction))
+ (set! (ly:grob-object (ambitus-head ambitus direction)
+ 'accidental-grob)
+ '()))
+ (else
+ (set! (ly:grob-property (ambitus-accidental ambitus direction)
+ 'alteration)
+ (ly:pitch-alteration pitch)))))
+ (ly:separation-item::add-conditional-item (ambitus-head ambitus direction)
+ accidental-placement)
+ (ly:accidental-placement::add-accidental accidental-placement
+ (ambitus-accidental ambitus direction))
+ (ly:pointer-group-interface::add-grob (ambitus-line ambitus)
+ 'note-heads
+ (ambitus-head ambitus direction))))
+ (list DOWN UP))
+ (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement))
+ (begin ;; no pitch ==> suicide all grobs
+ (for-each (lambda (direction)
+ (ly:grob-suicide! (ambitus-accidental ambitus direction))
+ (ly:grob-suicide! (ambitus-head ambitus direction)))
+ (list DOWN UP))
+ (ly:grob-suicide! ambitus-line))))
+
+%%%
+%%% Ambitus engraver definition
+%%%
+#(define ambitus-engraver
+ (lambda (context)
+ (let ((ambitus #f))
+ `((process-music . ,(lambda (translator)
+ (if (not ambitus)
+ (set! ambitus (make-ambitus translator)))))
+ (stop-translation-timestep . ,(lambda (translator)
+ (if ambitus
+ (typeset-ambitus ambitus translator))))
+ (acknowledgers
+ (note-head-interface . ,(lambda (engraver grob source-engraver)
+ (if ambitus
+ (update-ambitus-notes ambitus grob)))))
+ (finalize . ,(lambda (translator)
+ (if ambitus
+ (finalize-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 } }
+}
}
}
-trillflat =
-\once \override TrillSpanner #'(bound-details left text) =
-#(markup #:translate-scaled '(-0.05 . -1)
- #:concat (#:musicglyph "scripts.trill"
- #:translate '(-0.5 . 1.9) #:fontsize -7 #:flat))
-
+trillFlat =
+\once \override TrillSpanner #'(bound-details left text) = \markup {
+ \concat {
+ \musicglyph #"scripts.trill"
+ \translate #'(-0.5 . 1.9)
+ \fontsize #-7
+ \with-dimensions #'(0 . 0) #'(0 . 0)
+ \flat
+ }
+}
\new PianoStaff <<
|
\break
- \trillflat
+ \trillFlat
af''4. \startTrillSpan
~
af''8.
|
d''8. \stopTrillSpan
- \trillflat
+ \trillFlat
d''4. \startTrillSpan
~
|
- \trillflat
+ \trillFlat
d''4. \startTrillSpan
~
d''8.
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
LilyPond también proporciona funciones de formato para imprimir
números de grupo especial diferentes a la propia fracción, así
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Armaduras de tonalidad no tradicionales"
texidoces = "
\header {
lsrtags = "template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Esta plantilla muestra el uso de contextos @code{StaffGroup} y
\header {
lsrtags = "pitches, text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Internamente, @code{\\ottava} establece las propiedades
\header {
lsrtags = "repeats, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden mostrar los contadores de las repeticiones del tipo
porcentaje a intervalos regulares mediante el establecimiento de
\header {
lsrtags = "repeats"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las repeticiones de compases completos mayores de dos repeticiones
pueden llevar un contador si se activa la propiedad adecuada, como se
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra"
texidoces = "
Este ejemplo artificial muestra cómo se pueden permitir tanto los
\header {
lsrtags = "keyboards, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Presentamos a continuación una plantilla de piano sencilla con algunas
notas.
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Muchas partituras de piano tienen las indicaciones dinámicas centradas
entre los dos pentagramas. El contexto @code{Dynamics}, si se sitúa
\header {
lsrtags = "text, keyboards, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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.
\header {
lsrtags = "vocal-music, keyboards, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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.
\header {
lsrtags = "fretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Es posible ejercer un mayor control sobre la colocación de las
digitaciones de la mano derecha estableciendo el valor de una
\header {
lsrtags = "fretted-strings"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La polifonía se crea de la misma forma en un @code{TabStaff} que
en una pauta normal.
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Al establecer la propiedad @code{'strict-grace-spacing} hacemos que
\header {
lsrtags = "rhythms, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Posicionar los silencios multicompás"
texidoces = "
A diferencia de los silencios normales, no existe una instrucción
\header {
lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los elementos de marcado de texto deben tener la propiedad
\header {
lsrtags = "pitches"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Evitar que se añadan becuadros adicionales automáticamente"
texidoces = "
\header {
lsrtags = "pitches"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura"
texidoces = "
\header {
lsrtags = "repeats, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede imprimir una línea divisoria de la forma @code{|:} al
principio de la pieza, sobreescribiendo la propiedad correspondiente:
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden imprimir los números de compás a intervalos regulares
\header {
lsrtags = "rhythms, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias.
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden imprimir reguladores con un círculo en la punta (notación
«al niente») estableciendo la propiedad @code{circled-tip} del objeto
\header {
lsrtags = "text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Aunque normalmente las marcas de texto sólo se imprimen sobre el
pentagrama superior, también se pueden imprimir en otro pentagrama
\header {
lsrtags = "rhythms, expressive-marks, staff-notation, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
De forma predeterminada, las indicaciones metronómicas y las
letras de ensayo se imprimen encima del pentagrama. Para
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
De forma predeterminada se suprime el número del primer compás de una
\header {
lsrtags = "pitches, staff-notation"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los pasajes citados tienen en cuenta la transposición de la fuente
tanto como la del destino. En este ejemplo, todos los
\header {
lsrtags = "staff-notation"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La propiedad @code{quotedEventTypes} determina los tipos de eventos
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los valores predeterminados para las notas de adorno están
\header {
lsrtags = "rhythms, contexts-and-engravers"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden eliminar completamente los números de compás quitando el
\header {
lsrtags = "staff-notation, tweaks-and-overrides, breaks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
El primer pentagrama vacío también se puede suprimir de la
partitura estableciendo la propiedad @code{remove-first} de
\header {
lsrtags = "rhythms, ancient-notation, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Estilos de silencios"
texidoces = "
Los silencios se pueden imprimir en distintos estilos.
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
--- /dev/null
+% 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.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"
+} % begin verbatim
+
+
+#(use-modules (oop goops))
+
+%%%
+%%% Grob utilities
+%%%
+#(define (ly:event::in-event-class event class-name)
+ (memq class-name (ly:make-event-class (ly:event-property event 'class))))
+
+#(define (ly:separation-item::add-conditional-item grob grob-item)
+ (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item))
+
+#(define (ly:accidental-placement::accidental-pitch accidental-grob)
+ (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause)
+ 'pitch))
+
+#(define (ly:accidental-placement::add-accidental grob accidental-grob)
+ (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
+%%%
+#(define-class <ambitus> ()
+ (ambitus-line #:accessor ambitus-line)
+ (ambitus-group #:accessor ambitus-group)
+ (ambitus-up-note #:getter ambitus-up-note
+ #:init-form (make <ambitus-note>))
+ (ambitus-down-note #:getter ambitus-down-note
+ #:init-form (make <ambitus-note>))
+ (is-typeset #:accessor ambitus-is-typeset
+ #:init-value #f)
+ (start-c0 #:accessor ambitus-start-c0
+ #:init-value #f)
+ (start-key-sig #:accessor ambitus-start-key-sig
+ #:init-value '()))
+
+#(define-method (ambitus-note (ambitus <ambitus>) direction)
+ (if (= direction UP)
+ (ambitus-up-note ambitus)
+ (ambitus-down-note ambitus)))
+
+#(define-accessor ambitus-head)
+#(define-method (ambitus-head (ambitus <ambitus>) direction)
+ (ambitus-note-head (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-head) (ambitus <ambitus>) direction head)
+ (set! (ambitus-note-head (ambitus-note ambitus direction)) head))
+
+#(define-accessor ambitus-accidental)
+#(define-method (ambitus-accidental (ambitus <ambitus>) direction)
+ (ambitus-note-accidental (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-accidental) (ambitus <ambitus>) direction accidental)
+ (set! (ambitus-note-accidental (ambitus-note ambitus direction)) accidental))
+
+#(define-accessor ambitus-cause)
+#(define-method (ambitus-cause (ambitus <ambitus>) direction)
+ (ambitus-note-cause (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-cause) (ambitus <ambitus>) direction cause)
+ (set! (ambitus-note-cause (ambitus-note ambitus direction)) cause))
+
+#(define-accessor ambitus-pitch)
+#(define-method (ambitus-pitch (ambitus <ambitus>) direction)
+ (ambitus-note-pitch (ambitus-note ambitus direction)))
+#(define-method ((setter ambitus-pitch) (ambitus <ambitus>) direction pitch)
+ (set! (ambitus-note-pitch (ambitus-note ambitus direction)) pitch))
+
+#(define-class <ambitus-note> ()
+ (head #:accessor ambitus-note-head
+ #:init-value #f)
+ (accidental #:accessor ambitus-note-accidental
+ #:init-value #f)
+ (cause #:accessor ambitus-note-cause
+ #:init-value #f)
+ (pitch #:accessor ambitus-note-pitch
+ #:init-value #f))
+
+%%%
+%%% Ambitus engraving logics
+%%%
+#(define (make-ambitus translator)
+ (let ((ambitus (make <ambitus>)))
+ (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '()))
+ (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '()))
+ (for-each (lambda (direction)
+ (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '()))
+ (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '()))
+ (group (ambitus-group ambitus)))
+ (set! (ly:grob-parent accidental Y) head)
+ (set! (ly:grob-object head 'accidental-grob) accidental)
+ (ly:axis-group-interface::add-element group head)
+ (ly:axis-group-interface::add-element group accidental)
+ (set! (ambitus-head ambitus direction) head)
+ (set! (ambitus-accidental ambitus direction) accidental)))
+ (list DOWN UP))
+ (set! (ly:grob-parent (ambitus-line ambitus) X) (ambitus-head ambitus DOWN))
+ (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus))
+ (set! (ambitus-is-typeset ambitus) #f)
+ ambitus))
+
+#(define-method (typeset-ambitus (ambitus <ambitus>) translator)
+ (if (not (ambitus-is-typeset 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))
+ (set! (ambitus-is-typeset ambitus) #t))))
+
+#(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
+ (let ((note-event (ly:grob-property note-grob 'cause)))
+ (if (ly:event::in-event-class note-event 'note-event)
+ (let ((pitch (ly:event-property note-event 'pitch)))
+ (if (or (not (ambitus-pitch ambitus DOWN))
+ (ly:pitch<? pitch (ambitus-pitch ambitus DOWN)))
+ (begin ;; update down pitch
+ (set! (ambitus-pitch ambitus DOWN) pitch)
+ (set! (ambitus-cause ambitus DOWN) note-event)))
+ (if (or (not (ambitus-pitch ambitus UP))
+ (ly:pitch<? (ambitus-pitch ambitus UP) pitch))
+ (begin ;; update up pitch
+ (set! (ambitus-pitch ambitus UP) pitch)
+ (set! (ambitus-cause ambitus UP) note-event)))))))
+
+#(define-method (finalize-ambitus (ambitus <ambitus>) translator)
+ (if (and (ambitus-pitch ambitus UP) (ambitus-pitch ambitus DOWN))
+ (let ((accidental-placement (ly:engraver-make-grob translator
+ 'AccidentalPlacement
+ (ambitus-accidental ambitus DOWN))))
+ (for-each (lambda (direction)
+ (let ((pitch (ambitus-pitch ambitus direction)))
+ (set! (ly:grob-property (ambitus-head ambitus direction) 'cause)
+ (ambitus-cause ambitus direction))
+ (set! (ly:grob-property (ambitus-head ambitus direction) 'staff-position)
+ (+ (ambitus-start-c0 ambitus)
+ (ly:pitch-steps pitch)))
+ (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)
+ (ly:grob-suicide! (ambitus-accidental ambitus direction))
+ (set! (ly:grob-object (ambitus-head ambitus direction)
+ 'accidental-grob)
+ '()))
+ (else
+ (set! (ly:grob-property (ambitus-accidental ambitus direction)
+ 'alteration)
+ (ly:pitch-alteration pitch)))))
+ (ly:separation-item::add-conditional-item (ambitus-head ambitus direction)
+ accidental-placement)
+ (ly:accidental-placement::add-accidental accidental-placement
+ (ambitus-accidental ambitus direction))
+ (ly:pointer-group-interface::add-grob (ambitus-line ambitus)
+ 'note-heads
+ (ambitus-head ambitus direction))))
+ (list DOWN UP))
+ (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement))
+ (begin ;; no pitch ==> suicide all grobs
+ (for-each (lambda (direction)
+ (ly:grob-suicide! (ambitus-accidental ambitus direction))
+ (ly:grob-suicide! (ambitus-head ambitus direction)))
+ (list DOWN UP))
+ (ly:grob-suicide! ambitus-line))))
+
+%%%
+%%% Ambitus engraver definition
+%%%
+#(define ambitus-engraver
+ (lambda (context)
+ (let ((ambitus #f))
+ `((process-music . ,(lambda (translator)
+ (if (not ambitus)
+ (set! ambitus (make-ambitus translator)))))
+ (stop-translation-timestep . ,(lambda (translator)
+ (if ambitus
+ (typeset-ambitus ambitus translator))))
+ (acknowledgers
+ (note-head-interface . ,(lambda (engraver grob source-engraver)
+ (if ambitus
+ (update-ambitus-notes ambitus grob)))))
+ (finalize . ,(lambda (translator)
+ (if ambitus
+ (finalize-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 } }
+}
\header {
lsrtags = "expressive-marks, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Si los reguladores son demasiado cortos, se pueden alargar
modificando la propiedad @code{minimum-length} del objeto
\header {
lsrtags = "repeats"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
De forma predeterminada, los corchetes de primera y segunda vez se
trazan encima de los finales alternativos completos, pero es posible
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se pueden imprimir los acordes exclusivamente al comienzo de las
líneas y cuando cambia el acorde.
\header {
lsrtags = "chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Al juntar nombres de acorde en cifrado americano, melodía y letra,
obtenemos una hoja guía de acordes o «lead sheet»:
}
}
-trillflat =
-\once \override TrillSpanner #'(bound-details left text) =
-#(markup #:translate-scaled '(-0.05 . -1)
- #:concat (#:musicglyph "scripts.trill"
- #:translate '(-0.5 . 1.9) #:fontsize -7 #:flat))
-
+trillFlat =
+\once \override TrillSpanner #'(bound-details left text) = \markup {
+ \concat {
+ \musicglyph #"scripts.trill"
+ \translate #'(-0.5 . 1.9)
+ \fontsize #-7
+ \with-dimensions #'(0 . 0) #'(0 . 0)
+ \flat
+ }
+}
\new PianoStaff <<
|
\break
- \trillflat
+ \trillFlat
af''4. \startTrillSpan
~
af''8.
|
d''8. \stopTrillSpan
- \trillflat
+ \trillFlat
d''4. \startTrillSpan
~
|
- \trillflat
+ \trillFlat
d''4. \startTrillSpan
~
d''8.
\header {
lsrtags = "vocal-music, chords, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Esta plantilla facilita la preparación de una canción con melodía,
letra y acordes.
\header {
lsrtags = "vocal-music, chords, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Presentamos a continuación un ejemplo de plantilla para una hoja
guía de acordes con melodía, letra, acordes y diagramas de
\header {
lsrtags = "chords, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
¿Quiere preparar una hoja guía de acordes (o «lead sheet») con
melodía y acordes? ¡No busque más!
\header {
lsrtags = "vocal-music, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "text"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Los textos independientes se pueden disponer en varias columnas
utilizando instrucciones @code{\\markup}:
\version "2.13.10"
\header {
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "unfretted-strings, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Esta plantilla muestra un cuarteto de cuerda normal. También utiliza
una sección @code{\\global} para el compás y la armadura
\header {
lsrtags = "unfretted-strings, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un
resultado satisfactorio para el cuarteto, pero ¿y si tenemos que
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las barras de semicorcheas (o notas más breves) seguidas no se
subdividen de forma predeterminada. Esto es: las tres (o más)
\header {
lsrtags = "ancient-notation, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
A modo de alternativa para obtener auténticos «incipit»
independientes de la partitura principal, se incluyen como
\header {
lsrtags = "pitches"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Transportar música con el menor número de alteraciones"
texidoces = "
Este ejemplo utiliza código de Scheme para forzar las
\header {
lsrtags = "pitches, staff-notation, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Trucaje de las propiedades de clave"
texidoces = "
La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de
\header {
lsrtags = "rhythms, tweaks-and-overrides"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
La disposición de las expresiones de adorno se puede cambiar a lo
\header {
lsrtags = "staff-notation, contexts-and-engravers"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Se puede usar el delimitador de comienzo de un sistema
@code{SystemStartSquare} estableciéndolo explícitamente dentro de
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Algunos compositores escriben dos ligaduras cuando quieren acordes
legato. Esto se puede conseguir estableciendo @code{doubleSlurs}.
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Es posible aplicar la barrita que cruza la barra de las
\header {
lsrtags = "rhythms"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
doctitlees = "Uso de ligaduras en los arpegios"
texidoces = "
En ocasiones se usan ligaduras de unión para escribir los arpegios.
\header {
lsrtags = "tweaks-and-overrides, spacing"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor
adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e
\header {
lsrtags = "expressive-marks"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Las expresiones dinámicas que se comienzan, terminan o se producen
en la misma nota se alinean verticalmente. Para asegurar que las
\header {
lsrtags = "vocal-music, tweaks-and-overrides, spacing"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Este fragmento de código muestra el uso de las propiedades de
contexto @code{alignBelowContext} y @code{alignAboveContext} para
\header {
lsrtags = "vocal-music, keyboards, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Esta plantilla añade una reducción de piano automática a la partitura
\header {
lsrtags = "text, vocal-music, contexts-and-engravers, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "vocal-music, template"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
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
\header {
lsrtags = "repeats, staff-notation, chords"
-%% Translation of GIT committish: 5cab62e8738ff02eead438042743116391f306f5
+%% Translation of GIT committish: 341940d3830b59f93a80131471d622c2818afddb
texidoces = "
Mediante la adición del grabador @code{Volta_engraver} al
pentagrama pertinente, se pueden poner los corchetes de primera y
@item
@emph{Affaire étrangère}, an opera by
-@uref{http://www.valentin.villenave.net/,Valentin Villenave}
+@uref{http://valentin.villenave.net/,Valentin Villenave}
to a French libretto by
@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis
Trondheim}, premiered February 1, 2009 at
@c DO NOT WRITE BETWEEN THESE LINES
@c DO NOT WRITE BETWEEN THESE LINES
+@newsItem
+@subsubheading LilyPond 2.13.15 released! @emph{March 4, 2010}
+
+We are happy to announce the release of LilyPond 2.13.15. This
+release is intended for developers only, and includes a few
+updates to the binary build process in addition to the usual round
+of bugfixes.
+@newsEnd
+
@newsItem
@subsubheading LilyPond Report #17. @emph{March 1, 2010}
translation update in addition to the usual round of bugfixes.
@newsEnd
-@newsItem
-@subsubheading LilyPond 2.13.13 released! @emph{February 13, 2010}
-
-We are happy to announce the release of LilyPond 2.13.13. This
-release is intended for developers only, and fixes various
-problems with documentation build system as well as adding an
-output-preview-framework for our SVG backend. In addition, the
-binaries are now approximately 6 megabytes smaller.
-@newsEnd
-
-
@end ignore
+@newsItem
+@subsubheading LilyPond 2.13.13 released! @emph{February 13, 2010}
+
+We are happy to announce the release of LilyPond 2.13.13. This
+release is intended for developers only, and fixes various
+problems with documentation build system as well as adding an
+output-preview-framework for our SVG backend. In addition, the
+binaries are now approximately 6 megabytes smaller.
+@newsEnd
+
+
@newsItem
@subsubheading LilyPond 2.13.12 released! @emph{February 2, 2010}
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=13
-PATCH_LEVEL=15
+PATCH_LEVEL=16
MY_PATCH_LEVEL=
VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.14
+VERSION_DEVEL=2.13.15
\header{
texidoc="
Accidentals work: the second note does not get a sharp. The third and
-fourth show forced and courtesy accidentals.
+fourth show forced and cautionary accidentals.
"
}
\version "2.12.0"
\relative c' {
- \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
+ \arpeggioParenthesis
% Note: does not work for cross staff arpeggios.
\override Arpeggio #'X-extent = #ly:grob::stencil-width
forcedLastBreak = { \break }
-%% We want this to perfectly match the Baerenreiter spacing.
+%% We want this to perfectly match the Bärenreiter spacing.
%% If we're not using 6 systems, there's definately a problem.
#(define (assert-system-count smob n)
(let ((systems (length (ly:spanner-broken-into
piece ="Sarabande"
composer = "Johann Sebastian Bach (1685-1750)"
editor = "August Wenzinger"
- source= "B\\\"arenreiter Urtext"
+ source= "Bärenreiter Urtext"
- texidoc = "The B\\\"arenreiter edition of the Cello Suites is the
+ texidoc = "The Bärenreiter edition of the Cello Suites is the
most beautifully typeset piece of music in our collection of music (we
both own one. It is also lovely on French Horn). This piece does not
include articulation, but it does follows the same beaming and
identical.
There are two tweaks in this file: a line-break was forced before
-measure 25, we get back the linebreaking of Baerenreiter. The stem
+measure 25, we get back the linebreaking of Bärenreiter. The stem
direction is forced in measure 24. The last beam of that measure is up
-in Baerenreiter because of context. We don't detect that yet.
+in Bärenreiter because of context. We don't detect that yet.
-Note that the Barenreiter edition contains a few engraving
+Note that the Bärenreiter edition contains a few engraving
mistakes. The second line begins with measure 6 (but prints 5). The |:
half way in measure 13 has been forgotten.
"
beam. If an up-beam has high notes on its center stems, then we call
it concave.
- If a beam is fails a test, the desired slope is printed next to it.
+ If a beam fails a test, the desired slope is printed next to it.
"
}
\test "" ##[ { c( c) c^( c^) c_( c_) } #] % SlurEvent
\test "" ##[ { c\< c\! c^\< c^\! c_\< c_\! } #] % CrescendoEvent
\test "" ##[ { c\> c\! c^\> c^\! c_\> c_\! } #] % DecrescendoEvent
+\test "" ##[ { c\episemInitium c\episemFinis } #] % EpisemaEvent
\test "" ##[ { c\( c\) c^\( c^\) c_\( c_\) } #] % PhrasingSlurEvent
\test "" ##[ { c\sustainOn c\sustainOff } #] % SustainEvent
\test "" ##[ { c\sostenutoOn c\sostenutoOff } #] % SostenutoEvent
--- /dev/null
+\version "2.13.15"
+
+\header {
+ texidoc = "An episema can be typeset over a single neume or a
+melisma. Its position is quantized between staff lines."
+}
+
+#(set-global-staff-size 26)
+\include "gregorian.ly"
+
+\new VaticanaVoice {
+ \revert Score.SpacingSpanner #'packed-spacing
+ a\episemInitium\episemFinis
+ \[ a\episemInitium \pes b \flexa a\episemFinis \]
+ \[ a\episemInitium \pes b \flexa a b\episemFinis \flexa a \]
+}
--- /dev/null
+\header {
+
+ texidoc = "Scheme engravers may be instantiated, with
+ instance-scoped slots, by defining a 1 argument procedure which
+ shall return the engraver definition as an alist, with the private
+ slots defined in a closure. The argument procedure argument is the
+ context where the engraver is instantiated."
+
+}
+
+\version "2.13.15"
+
+\layout {
+ \context {
+ \Voice
+ \consists
+ #(let ((instance-counter 0))
+ (lambda (context)
+ (set! instance-counter (1+ instance-counter))
+ (let ((instance-id instance-counter)
+ (private-note-counter 0))
+ `((listeners
+ (note-event
+ . ,(lambda (engraver event)
+ (set! private-note-counter (1+ private-note-counter))
+ (let ((text (ly:engraver-make-grob engraver 'TextScript event)))
+ (ly:grob-set-property! text 'text
+ (format "~a.~a" instance-id
+ private-note-counter))))))))))
+ }
+}
+
+<<
+ \relative c'' { c4 d e f }
+ \\ \relative c' { c4 d e f }
+>>
\ No newline at end of file
return ly_interval2scm (ext);
}
+LY_DEFINE (ly_axis_group_interface__add_element, "ly:axis-group-interface::add-element",
+ 2, 0, 0, (SCM grob, SCM grob_element),
+ "Set @var{grob} the parent of @var{grob-element} on all axes of"
+ "@var{grob}.")
+{
+ LY_ASSERT_SMOB (Grob, grob, 1);
+ LY_ASSERT_SMOB (Grob, grob_element, 2);
+ Axis_group_interface::add_element (unsmob_grob (grob), unsmob_grob (grob_element));
+ return SCM_UNSPECIFIED;
+}
bool
ly_is_grob_cause (SCM obj)
{
- return unsmob_grob (obj) || unsmob_stream_event (obj);
+ return unsmob_grob (obj) || unsmob_stream_event (obj) || (obj == SCM_EOL);
}
#include "translator.icc"
--- /dev/null
+/*
+ This file is part of LilyPond, the GNU music typesetter.
+
+ Copyright (C) 2010 Neil Puttock <n.puttock@gmail.com>
+
+ LilyPond is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "engraver.hh"
+#include "international.hh"
+#include "note-column.hh"
+#include "pointer-group-interface.hh"
+#include "side-position-interface.hh"
+#include "spanner.hh"
+#include "stream-event.hh"
+
+#include "translator.icc"
+
+class Episema_engraver : public Engraver
+{
+public:
+ TRANSLATOR_DECLARATIONS (Episema_engraver);
+protected:
+ virtual void finalize ();
+ DECLARE_TRANSLATOR_LISTENER (episema);
+ DECLARE_ACKNOWLEDGER (note_column);
+ DECLARE_ACKNOWLEDGER (note_head);
+ void stop_translation_timestep ();
+ void process_music ();
+
+private:
+ Spanner *span_;
+ Spanner *finished_;
+ Stream_event *current_event_;
+ Drul_array<Stream_event *> event_drul_;
+ vector<Grob *> note_columns_;
+ void typeset_all ();
+};
+
+Episema_engraver::Episema_engraver ()
+{
+ finished_ = 0;
+ current_event_ = 0;
+ span_ = 0;
+ event_drul_.set (0, 0);
+}
+
+IMPLEMENT_TRANSLATOR_LISTENER (Episema_engraver, episema);
+void
+Episema_engraver::listen_episema (Stream_event *ev)
+{
+ Direction d = to_dir (ev->get_property ("span-direction"));
+ // Must not ASSIGN_EVENT_ONCE here, since episema
+ // can be typeset over a single neume
+ event_drul_[d] = ev;
+}
+
+void
+Episema_engraver::process_music ()
+{
+ if (event_drul_[START])
+ {
+ if (current_event_)
+ event_drul_[START]->origin ()->warning (_ ("already have an episema"));
+ else
+ {
+ current_event_ = event_drul_[START];
+ span_ = make_spanner ("Episema", event_drul_[START]->self_scm ());
+
+ event_drul_[START] = 0;
+ }
+ }
+ if (event_drul_[STOP])
+ {
+ if (!span_)
+ event_drul_[STOP]
+ ->origin ()->warning (_ ("cannot find start of episema"));
+ else
+ {
+ finished_ = span_;
+ announce_end_grob (finished_, SCM_EOL);
+ span_ = 0;
+ current_event_ = 0;
+ note_columns_.clear ();
+ }
+ }
+}
+
+void
+Episema_engraver::typeset_all ()
+{
+ if (finished_)
+ {
+ if (!finished_->get_bound (RIGHT))
+ {
+ Grob *col = (note_columns_.size ()
+ ? note_columns_.back ()
+ : unsmob_grob (get_property ("currentMusicalColumn")));
+ finished_->set_bound (RIGHT, col);
+ }
+ finished_ = 0;
+ }
+}
+
+void
+Episema_engraver::stop_translation_timestep ()
+{
+ if (span_ && !span_->get_bound (LEFT))
+ {
+ Grob *col = (note_columns_.size ()
+ ? note_columns_.front ()
+ : unsmob_grob (get_property ("currentMusicalColumn")));
+ span_->set_bound (LEFT, col);
+ }
+
+ typeset_all ();
+ event_drul_.set (0, 0);
+}
+
+void
+Episema_engraver::finalize ()
+{
+ typeset_all ();
+ if (span_)
+ {
+ current_event_->origin ()->warning (_ ("unterminated episema"));
+ span_->suicide ();
+ span_ = 0;
+ }
+}
+
+void
+Episema_engraver::acknowledge_note_column (Grob_info info)
+{
+ note_columns_.push_back (info.grob ());
+}
+
+void
+Episema_engraver::acknowledge_note_head (Grob_info info)
+{
+ if (span_)
+ {
+ Side_position_interface::add_support (span_, info.grob ());
+ add_bound_item (span_, info.grob ());
+ }
+ else if (finished_)
+ {
+ Side_position_interface::add_support (finished_, info.grob ());
+ add_bound_item (finished_, info.grob ());
+ }
+}
+
+ADD_ACKNOWLEDGER (Episema_engraver, note_column);
+ADD_ACKNOWLEDGER (Episema_engraver, note_head);
+
+ADD_TRANSLATOR (Episema_engraver,
+ /* doc */
+ "Create an @emph{Editio Vaticana}-style episema line.",
+
+ /* create */
+ "Episema ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
+LY_DEFINE (ly_grob_set_object_x, "ly:grob-set-object!",
+ 3, 0, 0, (SCM grob, SCM sym, SCM val),
+ "Set @var{sym} in grob @var{grob} to value @var{val}.")
+{
+ Grob *sc = unsmob_grob (grob);
+
+ LY_ASSERT_SMOB (Grob, grob, 1);
+ LY_ASSERT_TYPE (ly_is_symbol, sym, 2);
+
+ sc->set_object (sym, val);
+ return SCM_UNSPECIFIED;
+}
/* TODO: make difference between scaled and unscalead variable in
calling (i.e different funcs.) */
return par ? par->self_scm () : SCM_EOL;
}
+LY_DEFINE (ly_grob_set_parent_x, "ly:grob-set-parent!",
+ 3, 0, 0, (SCM grob, SCM axis, SCM parent_grob),
+ "Set @var{parent-grob} the parent of grob @var{grob} in axis @var{axis}.")
+{
+ Grob *gr = unsmob_grob (grob);
+ Grob *parent = unsmob_grob (parent_grob);
+
+ LY_ASSERT_SMOB (Grob, grob, 1);
+ LY_ASSERT_TYPE (is_axis, axis, 2);
+ LY_ASSERT_SMOB (Grob, parent_grob, 3);
+
+ Axis a = Axis (scm_to_int (axis));
+ gr->set_parent (parent, a);
+ return SCM_UNSPECIFIED;
+}
+
LY_DEFINE (ly_grob_properties, "ly:grob-properties",
1, 0, 0, (SCM grob),
"Get the mutable properties of @var{grob}.")
--- /dev/null
+/*
+ This file is part of LilyPond, the GNU music typesetter.
+
+ Copyright (C) 2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ LilyPond is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "pointer-group-interface.hh"
+#include "grob.hh"
+
+LY_DEFINE (ly_pointer_group_interface__add_grob, "ly:pointer-group-interface::add-grob",
+ 3, 0, 0, (SCM grob, SCM sym, SCM grob_element),
+ "Add @var{grob-element} to @var{grob}'s @var{sym} grob array.")
+{
+ LY_ASSERT_TYPE (unsmob_grob, grob, 1);
+ LY_ASSERT_TYPE (ly_is_symbol, sym, 2);
+ LY_ASSERT_TYPE (unsmob_grob, grob_element, 3);
+
+ Pointer_group_interface::add_grob (unsmob_grob (grob),
+ sym,
+ unsmob_grob (grob_element));
+ return SCM_UNSPECIFIED;
+}
+
instance = type->clone ();
dynamic_cast<Scheme_engraver*> (instance)->init_from_scheme (definition);
}
+ else if (ly_is_procedure (definition))
+ {
+ // `definition' is a procedure, which takes the context as
+ // an argument and evaluates to an a-list scheme engraver
+ // definition.
+ SCM def = scm_call_1 (definition, cs);
+ type = get_translator (ly_symbol2scm ("Scheme_engraver"));
+ instance = type->clone ();
+ dynamic_cast<Scheme_engraver*> (instance)->init_from_scheme (def);
+ }
if (!type)
warning (_f ("cannot find: `%s'", ly_symbol2string (scm_car (s)).c_str ()));
\remove "Stem_engraver"
\remove "Ligature_bracket_engraver"
\consists "Vaticana_ligature_engraver"
+ \remove "Text_spanner_engraver"
+ \consists "Episema_engraver"
%% Set default head for notes outside of \[ \].
\override NoteHead #'style = #'vaticana.punctum
%% There are no beams in Gregorian Chant notation.
autoBeaming = ##f
-
- %% Prepare TextSpanner for \episem{Initium|Finis} use.
- %%
- %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
- %% required to force the articulation signs being placed vertically
- %% tightly to the correpsonding note heads.
- %%
- \override TextSpanner #'style = #'line
- \override TextSpanner #'padding = #-0.1
}
\context {
\Voice
\name "GregorianTranscriptionVoice"
\alias "Voice"
+ \consists "Episema_engraver"
%% Removing ligature bracket engraver without replacing it by some
%% other ligature engraver would cause a "Junking event: `LigatureEvent'"
%% There are no beams in Gregorian Chant notation.
autoBeaming = ##f
- %% Prepare TextSpanner for \episem{Initium|Finis} use.
- %%
- %% N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
- %% always produce dashed lines, regardless of the style property.
- %%
- %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
- %% required to force the articulation signs being placed vertically
- %% tightly to the correpsonding note heads.
- %%
- \override TextSpanner #'dash-fraction = #'()
- \override TextSpanner #'style = #'line
- \override TextSpanner #'padding = #-0.1
}
\context {
ictus = #(make-articulation "ictus")
semicirculus = #(make-articulation "semicirculus")
circulus = #(make-articulation "circulus")
-episemInitium = \startTextSpan
-episemFinis = \stopTextSpan
%
% \augmentum increases the dot-count value of all note heads to which
\layout {
indent = 0.0
- %%% TODO: should raggedright be the default?
+ %%% TODO: should ragged-right be the default?
%ragged-right = ##t
ragged-last = ##t
stopTrillSpan = #(make-span-event 'TrillSpanEvent STOP)
+episemInitium = #(make-span-event 'EpisemaEvent START)
+episemFinis = #(make-span-event 'EpisemaEvent STOP)
+
+
% STOP: junkme!
cresc = {
#(ly:export (make-event-chord (list cr)))
(part-combine-event . (solo-one-event solo-two-event unisono-event))
(break-event . (line-break-event page-break-event page-turn-event))
(dynamic-event . (absolute-dynamic-event))
- (span-event . (span-dynamic-event beam-event ligature-event
+ (span-event . (span-dynamic-event beam-event episema-event ligature-event
pedal-event phrasing-slur-event slur-event staff-span-event
text-span-event trill-span-event tremolo-span-event
tuplet-span-event))
"Dynamic text spanner."
'(text))
+(ly:add-interface
+ 'episema-interface
+ "An episema line."
+ '())
+
(ly:add-interface
'finger-interface
"A fingering instruction."
text-interface))))))
+ (Episema
+ . (
+ (bound-details . ((left . ((Y . 0)
+ (padding . 0)
+ (attach-dir . ,LEFT)
+ ))
+ (right . ((Y . 0)
+ (padding . 0)
+ (attach-dir . ,RIGHT)
+ ))
+ ))
+ (direction . ,UP)
+ (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
+ (quantize-position . #t)
+ (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (side-axis . ,Y)
+ (stencil . ,ly:line-spanner::print)
+ (style . line)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (meta . ((class . Spanner)
+ (interfaces . (episema-interface
+ font-interface
+ line-interface
+ line-spanner-interface
+ side-position-interface))))))
+
+
(Fingering
. (
'ArticulationEvent
'BeamEvent
'BeamForbidEvent
+ 'BendAfterEvent
'CrescendoEvent
'DecrescendoEvent
+ 'EpisemaEvent
'ExtenderEvent
'FingeringEvent
'GlissandoEvent
(define-post-event-display-method MultiMeasureTextEvent (event parser) #t
(markup->lily-string (ly:music-property event 'text)))
+(define-post-event-display-method BendAfterEvent (event parser) #t
+ (format #f "\\bendAfter #~a" (ly:music-property event 'delta-step)))
+
(define-post-event-display-method HarmonicEvent (event parser) #f "\\harmonic")
(define-post-event-display-method GlissandoEvent (event parser) #t "\\glissando")
(define-post-event-display-method ArpeggioEvent (event parser) #t "\\arpeggio")
(define-span-event-display-method SlurEvent (event parser) #f "(" ")")
(define-span-event-display-method CrescendoEvent (event parser) #f "\\<" "\\!")
(define-span-event-display-method DecrescendoEvent (event parser) #f "\\>" "\\!")
+(define-span-event-display-method EpisemaEvent (event parser) #f "\\episemInitium" "\\episemFinis")
(define-span-event-display-method PhrasingSlurEvent (event parser) #f "\\(" "\\)")
(define-span-event-display-method SustainEvent (event parser) #f "\\sustainOn" "\\sustainOff")
(define-span-event-display-method SostenutoEvent (event parser) #f "\\sostenutoOn" "\\sostenutoOff")
event))
))
+ (EpisemaEvent
+ . ((description . "Begin or end an episema.")
+ (types . (general-music span-event event episema-event))
+ ))
+
(Event
. ((description . "Atomic music event.")
(types . (general-music event))
(,input-port? . "input port")
(,integer? . "integer")
(,list? . "list")
+ (,list-or-symbol? . "list or symbol")
(,ly:context? . "context")
(,ly:dimension? . "dimension, in staff space")
(,ly:dir? . "direction")
(,output-port? . "output port")
(,pair? . "pair")
(,procedure? . "procedure")
+ (,real? . "real number")
(,rhythmic-location? . "rhythmic location")
(,scheme? . "any type")
(,string? . "string")
+ (,string-or-pair? . "string or pair")
(,symbol? . "symbol")
(,vector? . "vector")))
(make-procedure-with-setter ly:grob-property
ly:grob-set-property!))
+(define-public ly:grob-object
+ (make-procedure-with-setter ly:grob-object
+ ly:grob-set-object!))
+
+(define-public ly:grob-parent
+ (make-procedure-with-setter ly:grob-parent
+ ly:grob-set-parent!))
+
(define-public ly:prob-property
(make-procedure-with-setter ly:prob-property
ly:prob-set-property!))
('([\w\)\]])(\+|-)([_A-Za-z\(])', '\\1 \\2 \\3'),
('([_\dA-Za-df-z\)\]])(\+|-)([\w\(])', '\\1 \\2 \\3'),
# trailing operator
- (' (::|&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|\+|-|=|/|:|&XXX|\||\*XXX)[ \t]*\n([ \t]*)', '\n\\2\\1 '),
+ (' (::|&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|\+|-|=|/|:|&XXX|\||\*XXX)[ \t]*\n([ \t]*)', '\n\\2\\1 '),
# pointer
##('(bool|char|const|delete|int|stream|unsigned|void|size_t|struct \w+|[A-Z]\w*|,|;|&&|<|[^-]>|\|\||-|\+)[ \t]*(\*|&)[ \t]*', '\\1 \\2'),
- ('(bool|char|const|delete|int|stream|unsigned|void|size_t|struct \w+|[A-Z]\w*|,|;|:|=|\?\)|&&|<|[^-]>|\|\||-|\+)[ \t]*(\*|&)[ \t]*', '\\1 \\2'),
+ ('(bool|char|const|delete|int|stream|unsigned|void|vsize|size_t|struct \w+|[A-Z]\w*|,|;|:|=|\?\)|&&|<|[^-]>|\|\||-|\+)[ \t]*(\*|&)[ \t]*', '\\1 \\2'),
#to#('(bool|char|const|delete|int|stream|unsigned|void|([A-Z]\w*)|[,])[ \n\t]*(\*|&)[ \t]*', '\\1 \\3'),
# pointer with template
- ('(( *((bool|char|const|delete|int|stream|unsigned|void|size_t|class[ \t]+\w*|[A-Z]\w*|\w+::\w+|[,])[ \*&],*)+)>) *(\*|&) *', '\\1 \\5'),
+ ('(( *((bool|char|const|delete|int|stream|unsigned|void|size_t|class[ \t]+\w*|[A-Z]\w*|\w+::\w+|[,])\s*[\*&],*)+)>) *(\*|&) *', '\\1 \\5'),
#to#('(( *((bool|char|delete|int|stream|unsigned|void|(class[ \t]+\w*)|([A-Z]\w*)|[,])[ \*&],*)+)>)[ \t\n]*(\*|&) *', '\\1 \\7'),
# unary pointer, minus, not
- ('(return|=) (\*|&|-|!) ([\w\(])', '\\1 \\2\\3'),
+ ('(return|=|&&|\|\|) (\*|&|-|!) ([\w\(])', '\\1 \\2\\3'),
# space after `operator'
('(\Woperator) *([^\w\s])', '\\1 \\2'),
# dangling brace close
('(typedef struct\s+([\w]*\s){([^}]|{[^}]*})*})\s*\n\s*(\w[\w\d]*;)', '\\1 \\4'),
# delete spaces around template brackets
#('(dynamic_cast|template|([A-Z]\w*))[ \t]*<[ \t]*(( *(bool|char|int|unsigned|void|(class[ \t]+\w*)|([A-Z]\w*)),?)+)[ \t]?(| [\*&])[ \t]*>', '\\1<\\3\\8>'),
- ('(dynamic_cast|template|typedef|\w+::\w+|[A-Z]\w*)[ \t]*<[ \t]*(( *(bool|char|const|int|unsigned|void|size_t|class[ \t]+\w*|[A-Z]\w*)( *[\*&]?,|[\*&])*)+)[ \t]?(| [\*&])[ \t]*>', '\\1<\\2\\6>'),
+ ('(dynamic_cast|less|list|map|set|template|typedef|vector|\w+::\w+|[A-Z]\w*)[ \t]*<[ \t]*(( *(bool|char|const|string|int|unsigned|void|vsize|size_t|class[ \t]+\w*|[A-Z]\w*)( *[\*&]?,|[\*&])*)+)[ \t]?(| [\*&])[ \t]*>', '\\1<\\2\\6>'),
('(\w+::\w+|[A-Z]\w*) < ((\w+::\w+|[A-Z]\w*)<[A-Z]\w*>) >', '\\1<\\2 >'),
('((if|while)\s+\(([^\)]|\([^\)]*\))*\))\s*;', '\\1\n;'),
('(for\s+\(([^;]*;[^;]*;([^\)]|\([^\)]*\))*)\))\s*;', '\\1\n;'),
--- /dev/null
+#!@PYTHON@
+#-*- coding: utf-8 -*-
+
+## This is web_post.py. This script deals with translations
+## in the "make website" target.
+
+import sys
+import os
+import glob
+
+lang_lookup = {
+ 'fr': 'français',
+ 'es': 'español',
+ '': 'english'
+}
+
+#indir, outdir = sys.argv[1:]
+
+# FIXME: looks dangerous!
+indir = sys.argv[1]
+outdir=indir
+
+html_files = glob.glob( os.path.join(indir, '*.html') )
+
+# messy way to get all languages
+langs_set = set()
+for file in html_files:
+ file_split = file.split('.')
+ if (len(file_split) == 2):
+ # it's English
+ lang = ''
+ else:
+ # it's a translation
+ lang = file_split[1]
+ langs_set.add(lang)
+langs = list(langs_set)
+langs.sort()
+
+def makeFooter(currentLang):
+ text = "<p id=\"languages\">\n"
+ text += "Other languages: "
+ for i in range(len(langs)):
+ l = langs[i]
+ if (l == currentLang):
+ continue
+ text += "<a href=\"index"
+ if (not (l=='')):
+ text += "." + l
+ text += ".html\">"
+ text += lang_lookup[l]
+ text += "</a>"
+ if (i < len(langs)-2):
+ text += ", "
+ else:
+ text += ".\n"
+ # TODO: add link to automatic language selection?
+ # still need to include this page in the new webpages somewhere
+ text += "</p>\n"
+ return text
+
+
+for file in html_files:
+ file_split = file.split('.')
+ # we want to strip the .html
+ out_filename = os.path.basename(file_split[0])
+ if (len(file_split) == 2):
+ # it's English
+ lang = ''
+ else:
+ # it's a translation
+ lang = file_split[1]
+ out_filename += '.'+lang
+
+# I can't get the previous name to work
+ out_filename = os.path.basename(file)
+
+ # translation links should point to translations
+ lines = open(file).readlines()
+ # ick
+ os.remove(file)
+
+ lang_footer = makeFooter(lang)
+
+ outfile = open( os.path.join(outdir, out_filename), 'w')
+ for line in lines:
+ # avoid external links
+ if ((line.find("href") >= 0) and (line.find("http")==-1)):
+# eventually we want to do this, but I can't get it to work.
+# waiting for help with apache (?)
+# line = line.replace(".html", "."+lang)
+ line = line.replace(".html", "."+lang+".html")
+ if (line.find("<!-- FOOTER -->") >= 0):
+ outfile.write( lang_footer )
+ outfile.write(line)
+ outfile.close()
+
################################################################
OUT=out-website
-WEB_LANGS=es fr
+WEB_LANGS=es
TEXI2HTML=ONLY_WEB=1 TOP_SRC_DIR=$(top-src-dir) DEPTH=$(depth) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
CREATE_VERSION=python $(script-dir)/create-version-itexi.py
CREATE_WEBLINKS=python $(script-dir)/create-weblinks-itexi.py
MASS_LINK=python $(script-dir)/mass-link.py
+WEB_POST=python $(script-dir)/website_post.py
SERVER_FILES=$(top-src-dir)/Documentation/web/server/
mkdir -p $(OUT)/website/ly-examples
cp $(EXAMPLES)/* $(OUT)/website/ly-examples
-website: website-texinfo website-css website-pictures website-examples
+web-post:
+ $(WEB_POST) $(OUT)/website/
+
+website: website-texinfo website-css website-pictures website-examples web-post
cp $(SERVER_FILES)/favicon.ico $(OUT)/website/
cp $(SERVER_FILES)/lilypond.org.htaccess $(OUT)/website/.htaccess
cp $(SERVER_FILES)/robots.txt $(OUT)/website/
+