@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: d6b6b53d09a0fb8e137e7cfcec39fe22dc7b6872
+ Translation of GIT committish: 1f0a00b69403290b7fc7527b9ab100f95533f954
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@funindex tweak
La última instrucción de trucaje que está disponible es @code{\tweak}.
-Se debe utilizar para cambiar las propiedades de objetos que suceden
-en el mismo momento musical, como las notas de un acorde. El uso de
+Se debe utilizar cuando varios objetos tienen lugar
+en el mismo momento musical pero solo queremos cambiar las propiedades
+de algunos de ellos, como una sola nota dentro de un acorde.
+El uso de
@code{\override} para la sobreescritura afectaría a todas las notas
del acorde, mientras que @code{\tweak} afecta solamente al siguiente
elemento del flujo de entrada.
embargo, es efectivo solamente sobre objetos que se crean directamente
a partir del flujo de entrada, en esencia las cabezas y las
articulaciones; los objetos como las plicas y las alteraciones se
-crean con posterioridad y no se pueden trucar de esta forma. Es más,
-cuando se aplica a las cabezas de las notas, éstas @emph{deben} estar
-dentro de un acorde, es decir, dentro de ángulos simples, así que para
-trucar una sola nota la instrucción @code{\tweak} se debe colocar
-dentro de ángulos simples junto con la nota.
+crean con posterioridad y no se pueden trucar de esta forma.
Así pues, volviendo a nuestro ejemplo, el tamaño de la nota intermedia
se cambiaría de la siguiente forma:
@noindent
Observe que la instrucción @code{\tweak} debe venir precedida de una
-marca de articulación como si ella misma fuera una articulación.
+marca de articulación porque la propia expresión trucada debe aplicarse
+como una articulación. En el caso de más de una sobreescritura de dirección
+(@code{^} o @code{_}), gana la sobreescritura situada más a la izquierda
+porque se aplica en último lugar.
@cindex grupos especiales anidados
@cindex tresillos anidados
}
VerseTwo = \lyricmode {
- O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
+ O | \once \emphasize Christ, whose voice the | wa -- ters heard,
}
VerseThree = \lyricmode {
@lilypond[quote,verbatim,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ ^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
%%% guardar esto en un archivo de nombre "definiciones.ily"
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \markup @{ \hspace #0
+ \translate #'(5 . 0)
+ \line @{ \dynamic "mp"
+ \text \italic "dolce" @} @}
+ #@})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #@{ ^\markup \bold \box #string #@})
@end example
Haremos referencia a este archivo utilizando la instrucción
@lilypond[quote,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ ^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
%%% definiciones.ily
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \markup @{ \hspace #0
+ \translate #'(5 . 0)
+ \line @{ \dynamic "mp"
+ \text \italic "dolce" @} @}
+ #@})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #@{ ^\markup \bold \box #string #@})
\layout@{
\context @{
@lilypond[quote,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ ^\markup \bold \box #string #})
\layout{
\context {
%%% definiciones.ily
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \markup @{ \hspace #0
+ \translate #'(5 . 0)
+ \line @{ \dynamic "mp"
+ \text \italic "dolce" @} @}
+ #@})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #@{ ^\markup \bold \box #string #@})
#(set-global-staff-size 23)
@lilypond[quote,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ ^\markup \bold \box #string #})
#(set-global-staff-size 23)
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
-Translation of GIT committish: ffb5c20633459831cea21859f3423ea50060d705
+Translation of GIT committish: 18cfd801fa7fcd698e924f3b530862714f3e3013
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
* Agrupación vertical de objetos gráficos::
* Modificación de los sellos::
* Modificación de las formas::
+* Contenedores unpure-pure::
@end menu
Referencia de funcionamiento interno:
@rinternals{TieColumn}.
+@cindex Scheme, contenedores puros
+@cindex Scheme, contenedores no-puros
+@cindex puros, contenedores de Scheme
+@cindex no-puros: contenedores de Scheme
+@cindex horizontal, sobreescribir el espaciado
+
+@node Contenedores unpure-pure
+@subsection Contenedores unpure-pure
+@translationof Unpure-pure containers
+
+Los contenedores @q{unpure-pure} (pura y no pura) son útiles para la
+sobreescritura de los cálculos del espaciado en el @emph{eje Y}
+(concretamente @code{Y-offset} e @code{Y-extent}) con una función de
+Scheme en lugar de un literal, es decir, un número o una pareja de
+números.
+
+Para ciertos objetos gráficos, las dimensiones @code{Y-extent} están
+basadas en la propiedad @code{stencil}, la sobreescritura de la
+propiedad de sello de éstos requiere una sobreescritura adicional de
+@code{Y-extent} con un contenedor unpure-pure. Cuando una función
+sobreescribe una dimensión @code{Y-offset} y/o @code{Y-extent} se
+supone que esto dispara los cálculos de los saltos de línea
+prematuramente durante la compilación. Así pues, la función no se
+evalúa en absoluto (devolviendo por lo general un valor de @samp{0} o
+@samp{'(0 . 0)}) lo que puede dar lugar a colisiones. Una función
+@q{pura} no afecta a las propiedades, objetos o suicidios de grobs, y
+por ello siempre ven sus valores relacionados con el eje Y evaluados
+correctamente.
+
+Actualmente hay unas treinta funciones que ya se consideran @q{puras}
+y los contenedores Unpure-pure son una manera de establecer funciones
+que no están en esta lista como @q{puras}. La función @q{pura} se
+evalúa @emph{antes} de cualquier salto de línea y así el espaciado
+horizontal se puede ajustar @q{a tiempo}. La función @q{impura} se
+evalúa entonces @emph{después} del salto de línea.
+
+@warning{Dado que es difícil saber siempre qué funciones están en esta
+lista, recomendamos que cualquier función @q{pura} que estemos creando
+no utilice los grobs @code{Beam} o @code{VerticalAlignment}.}
+
+Un contenedor @q{unpure-pure} se contruye de la manera siguiente:
+
+@code{(ly:make-unpure-pure-container f0 f1)}
+
+donde @code{f0} es una función que toma @var{n} argumentos (@var{n >=
+1}) y el primer argumento siempre debe ser el grob. Ésta es la
+función que da el resultado real. @var{f1} es la función que se
+etiqueta como @q{pura} que toma @var{n + 2} argumentos. De nuevo, el
+primer argumento debe ser siempre el grob pero los argumentos segundo
+y tercero son argumentos de @q{inicio} y de @q{final}.
+
+@var{inicio} y @var{final} son, a todos los efectos, valores mudos que
+sólo tienen importancia para los @code{objetos de extensión} (o sea:
+@code{Hairpin}, regulador, o @code{Beam}, barra), que pueden devolver
+distintas estimaciones de altura basadas en una columna de inicio y
+una de final.
+
+El resto son los otros argumentos para la primera función (que puede
+no ser ninguno si @var{n = 1}).
+
+El resultado de la segunda función se usa como una aproximación del
+valor necesario, que se usa entonces por la primera función para
+obtener el valor real que se usa a continuación para el ajuste de
+precisión mucho más tardío durante el proceso de espaciado.
+
+@lilypond[verbatim,quote,ragged-right]
+#(define (square-line-circle-space grob)
+(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
+ (notename (ly:pitch-notename pitch)))
+ (if (= 0 (modulo notename 2))
+ (make-circle-stencil 0.5 0.0 #t)
+ (make-filled-box-stencil '(0 . 1.0)
+ '(-0.5 . 0.5)))))
+
+squareLineCircleSpace = {
+ \override NoteHead #'stencil = #square-line-circle-space
+}
+
+smartSquareLineCircleSpace = {
+ \squareLineCircleSpace
+ \override NoteHead #'Y-extent =
+ #(ly:make-unpure-pure-container
+ ly:grob::stencil-height
+ (lambda (grob start end) (ly:grob::stencil-height grob)))
+}
+
+\new Voice \with { \remove "Stem_engraver" }
+\relative c'' {
+ \squareLineCircleSpace
+ cis4 ces cisis c
+ \smartSquareLineCircleSpace
+ cis4 ces cisis c
+}
+@end lilypond
+
+En el primer compás, sin el contenedor @emph{unpure-pure}, el motor de
+espaciado no conoce la anchura de la cabeza de la nota y permite que
+colisione con las alteraciones accidentales. En el segundo compás, el
+motor de espaciado conoce la anchura de las cabezas de las notas y
+evita la colisión mediante el alargamiento de la línea en la medida
+adecuada.
+
+Normalmente, para cálculos simples se pueden usar funciones casi
+idénticas tanto para las partes @q{no pura} y @q{pura}, simplemente
+cambiando el número de argumentos que se pasan a, y el ámbito de, la
+función.
+
+@warning{Si una función está caracterizada como @q{pura} y resulta que
+no lo es, el resultado puede ser inesperado.}
+
@node Uso de las funciones musicales
@section Uso de las funciones musicales
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 9630731c95c8e1c64dc3588d8b37edce83dc9fa0
+ Translation of GIT committish: 940309ad0e403897f556c8253e69708121b91765
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
>>
@end lilypond
-@funindex \tabChordRepetition
+@funindex \tabChordRepeats
+@funindex \chordRepeats
@cindex acordes, repetición de
@cindex repetición con @code{q}
Las construcciones de acorde se pueden repetir mediante el símbolo de
-repetición de acordes @code{q}. Para utilizar esta posibilidad en
-combinación con la tablatura, se proporciona
-@code{\tabChordRepetition}, que preserva la información de cuerdas
-dada explícitamente dentro de las construcciones de acorde, de forma
-que los acordes repetidos den lugar a representaciones de tablatura
-idénticas.
+repetición de acordes @code{q}. En combinación con las tablaturas, su
+comportamiento de eliminar números de cuerda y de dedos junto a otros
+eventos es fastidioso, por lo que quizá quiera ejecutar
+@example
+\chordRepeats #'(string-number-event fingering-event)
+@end example
+explícitamente sobre expresiones musicales en las tablaturas que
+utilicen @ref{Repetición de acordes}. Esta instrucción en particular
+es tan común que está disponible como @code{\tabChordRepeats}.
@lilypond[quote,verbatim]
-\tabChordRepetition
-
guitar = \relative c' {
- r8 <gis\4 cis\3 b\2>~ q4 q8~ q q4
+ r8 <gis-6 cis-6 b-0>~ q4 q8~ q q4
}
\new StaffGroup <<
\new Staff {
\clef "treble_8"
- \override Voice.StringNumber #'transparent = ##t
\guitar
}
\new TabStaff {
- \guitar
+ \tabChordRepeats \guitar
}
>>
@end lilypond
@lilypond[verbatim,quote]
firstHarmonic = {
- <d'\4\harmonic>4
- <g'\3\harmonic>4
- <b'\2\harmonic>2
+ d'4\4\harmonic
+ g'4\3\harmonic
+ b'2\2\harmonic
}
\score {
<<
}
@end lilypond
-Observe que la instrucción @code{\harmonic} se debe situar siempre
-dentro de una construcción de acorde. Sólo tiene sentido para
-armónicos sobre una cuerda abierta en el duodécimo traste. Cualquier
-otro armónico debe estar calculado por parte de LilyPond. Se puede
-conseguir esto indicando el traste en que debe rozar la cuerda el dedo
-de la mano que pisa.
+Observe que la instrucción @code{\harmonic} se debe adjuntar siempre a
+notas individuales (posiblemente dentro de un acorde) en lugar de a
+acordes completos. Sólo tiene sentido para armónicos sobre una cuerda
+abierta en el duodécimo traste. Cualquier otro armónico debe estar
+calculado por parte de LilyPond. Se puede conseguir esto indicando el
+traste en que debe rozar la cuerda el dedo de la mano que pisa.
@lilypond[verbatim,quote]
fretHarmonics = {
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 69618c55ab79b032a109ba9f347831ede1048abc
+ Translation of GIT committish: 18cfd801fa7fcd698e924f3b530862714f3e3013
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@translationof Automatic footnotes
Las notas al pie automáticas aceptan tres argumentos; el @var{Objeto de
-presentación} que anotar, la posición @var{(x . y)} del indicador y un
+presentación} que anotar, la posición @samp{(x . y)} del indicador y un
elemento de @code{\markup} que aparecerá en la nota, en la parte
inferior de la página.
Las notas al pie manuales toman cuatro argumentos;
el @var{objeto de presentación} que se va a anotar,
-la posición @var{(x . y)} del indicador, y dos instrucciones
+la posición @samp{(x . y)} del indicador, y dos instrucciones
@code{\markup}; la primera es el indicador adjunto a la nota o grob, y
la segunda es la nota al pie, en la parte inferior de la página.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3c77203e4d07000d4d888df5f5031a3623d43980
+ Translation of GIT committish: 18dda6b2f5fbea91a174b60eb22bbb73591b9b64
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
* Glifos de neomensural::
* Glifos de Petrucci::
* Glifos de Solesmes::
+* Glifos de la notación del canto kievano::
@end menu
\doc-chars #solesmes
@end lilypond
+@node Glifos de la notación del canto kievano
+@unnumberedsubsec Glifos de la notación del canto kievano
+@translationof Kievan Notation glyphs
+
+@lilypond[quote]
+\include "font-table.ly"
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #kievan
+@end lilypond
@node Estilos de cabezas de nota
@appendixsec Estilos de cabezas de nota