@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 45945bd973aa9161b10e3f517902afb7ef4b4a56
+ Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
+ version that you are working on. For details, see the Contributors'
+ Guide, node Updating translation committishes..
@end ignore
-@c \version "2.12.0"
+@c \version "2.14.0"
-@node Fundamental concepts
-@chapter Fundamental concepts
+@node Conceptos fundamentales
+@chapter Conceptos fundamentales
+@translationof Fundamental concepts
Ha podido ver en el tutorial cómo producir música bellamente impresa a
partir de un simple archivo de texto. Esta sección presenta los
igualmente bellas pero más complejas.
@menu
-* How LilyPond input files work::
-* Voices contain music::
-* Contexts and engravers::
-* Extending the templates::
+* Cómo funcionan los archivos de entrada de LilyPond::
+* Las voces contienen música::
+* Contextos y grabadores::
+* Extender las plantillas::
@end menu
-@node How LilyPond input files work
-@section How LilyPond input files work
+@node Cómo funcionan los archivos de entrada de LilyPond
+@section Cómo funcionan los archivos de entrada de LilyPond
+@translationof How LilyPond input files work
El formato de entrada de LilyPond es bastante libre en su forma y
concede a los usuarios con experiencia mucha flexibilidad para
los nuevos usuarios. Esta sección le va a explicar parte de esta
estructura, pero puede obviar ciertos detalles en aras de la
simplicidad. Para ver una descripción completa del formato de
-entrada, consulte @ruser{File structure}.
+entrada, consulte @ruser{Estructura del archivo}.
@menu
-* Introduction to the LilyPond file structure::
-* Score is a (single) compound musical expression::
-* Nesting music expressions::
-* On the un-nestedness of brackets and ties::
+* Introducción a la estructura de los archivos de LilyPond::
+* La partitura es una (única) expresión musical compuesta::
+* Anidado de expresiones musicales::
+* Acerca de la no anidabilidad de llaves y ligaduras::
@end menu
-@node Introduction to the LilyPond file structure
-@subsection Introduction to the LilyPond file structure
+@node Introducción a la estructura de los archivos de LilyPond
+@subsection Introducción a la estructura de los archivos de LilyPond
+@translationof Introduction to the LilyPond file structure
@cindex entrada, formato de la
@cindex archivo, estructura del
@example
\version @w{"@version{}"}
+
\header @{ @}
+
\score @{
@var{...expresión musical compuesta...} % toda la música viene aquí
\layout @{ @}
la creación implícita de los contextos puede dar lugar a resultados
inesperados, incluso en ocasiones crear pentagramas no deseados. La
forma de crear contextos de forma explícita se explica en
-@ref{Contexts and engravers}.
+@ref{Contextos y grabadores}.
@warning{Cuando se escriben más de unas pocas líneas de música, se
recomienda crear siempre los pentagramas y las voces de forma
@funindex layout
@funindex \midi
@funindex midi
-@cindex header
-@cindex layout
@cindex midi
@cindex cabecera
@cindex disposición
y @code{\midi @{ @}}. Si aparecen tal y como se muestran aquí, hacen
que LilyPond produzca una salida impresa y una salida MIDI,
respectivamente. Se describen con todo detalle en el manual de
-Referencia de la notación, en @ruser{Score layout} y en
-@ruser{Creating MIDI files}.
+Referencia de la notación, en @ruser{Disposición de la partitura} y en
+@ruser{Crear archivos MIDI}.
@cindex partituras, varias
@cindex book, bloque implícito
combinarán todos juntos en un archivo de salida único. No se necesita
ninguna instrucción @code{\book}, se creará una implícitamente. Sin
embargo, si quiere archivos de salida separados a partir de un único
-archivo @code{.ly}, entonces es necesario utilizar la instrucción
+archivo @file{.ly}, entonces es necesario utilizar la instrucción
@code{\book} para separar las distintas secciones: cada bloque
@code{\book} produce un archivo de salida distinto.
@code{\book}, ya sea explícita o implícitamente) afecta a los bloques
@code{\score} que están dentro de ese @code{\book}.
-Para ver más detalles, consulte @ruser{Multiple scores in a book}.
+Para ver más detalles, consulte @ruser{Varias partituras en un libro}.
@cindex variables
-Otro atajo genial es la posibilidad de definir variables. Todas las
+Otro magnífico atajo es la posibilidad de definir variables como
+se muestra en @ref{Organizar las piezas mediante variables}. Todas las
plantillas emplean lo siguiente:
@example
Cuando LilyPond examina este archivo, toma el valor de @code{melodia}
(todo lo que está después del signo igual) y lo inserta dondequiera
-que ve @code{\melodia}. No se requiere un cuidado especial con los
-nombres (puede ser @code{melodia}, @code{global},
+que ve @code{\melodia}. No se requiere un cuidado especial con el
+nombre (puede ser @code{melodia}, @code{global},
@code{CompasArmadura}, @code{manoderechadelpiano} o
-@code{fulanomengano}). Para ver más detalles, consulte @ref{Saving
-typing with variables and functions}. Recuerde que puede usar casi
+@code{fulanomengano} o cualquier otro). Recuerde que puede usar casi
cualquier nombre que se le ocurra, en la medida en que contenga
solamente caracteres alfabéticos y sea diferente de cualquiera de los
-nombres de instrucción de LilyPond. Las limitaciones exactas que
-afectan a los nombres de variable se detallan en @ruser{File
-structure}.
+nombres de instrucción de LilyPond. Para ver más detalles, consulte @ref{Ahorrar
+tecleo mediante variables y funciones}. Las limitaciones exactas que
+afectan a los nombres de variable se detallan en @ruser{Estructura del
+archivo}.
@seealso
Para ver una definición completa del formato del código de entrada,
-consulte @ruser{File structure}.
+consulte @ruser{Estructura del archivo}.
-@node Score is a (single) compound musical expression
-@subsection Score is a (single) compound musical expression
+@node La partitura es una (única) expresión musical compuesta
+@subsection La partitura es una (única) expresión musical compuesta
+@translationof Score is a (single) compound musical expression
@cindex score
@cindex partitura
@funindex \score
@funindex score
-En la sección anterior, @ref{Introduction to the LilyPond file
-structure}, hemos podido ver la organización general de los archivos
-de entrada de LilyPond. Pero parece que nos saltamos la parte más
-importante: ¿cómo averiguamos qué escribir después de @code{\score}?
+En la sección anterior, @ref{Introducción a la estructura de los
+archivos de LilyPond}, hemos podido ver la organización general de los
+archivos de entrada de LilyPond. Pero parece que nos saltamos la
+parte más importante: ¿cómo averiguamos qué escribir después de
+@code{\score}?
-No nos hemos saltado nada en absoluto. El gran misterio es, sencillamente,
-que no hay @emph{ningún} misterio. La siguiente línea lo explica
-todo:
+No nos hemos saltado nada en absoluto. El gran misterio es,
+sencillamente, que no hay @emph{ningún} misterio. La siguiente línea
+lo explica todo:
@quotation
@emph{Un bloque @code{\score} debe comenzar con una expresión musical
@noindent
Para comprender lo que se entiende por expresión musical y expresión
musical compuesta, quizá encuentre útil dar un repaso al tutorial,
-@ref{Music expressions explained}. En esta sección vimos cómo
+@ref{Explicación de las expresiones musicales}. En esta sección vimos cómo
elaborar grandes expresiones musicales a partir de pequeñas piezas
(comenzábamos con notas, luego acordes, etc.). Ahora partiremos de
una gran expresión musical y recorreremos el camino inverso hacia
-abajo.
-
-@example
-\score @{
- @{ % esta llave da inicio a toda la expresión musical compuesta
- \new StaffGroup <<
- @var{...introduzca aquí la partitura completa de una ópera de Wagner...}
- >>
- @} % esta llave da por terminada toda expresión musical completa
- \layout @{ @}
-@}
-@end example
-
-Una ópera de Wagner completa puede ser fácilmente el doble de larga
-que este manual, por tanto vamos a hacer sólo un cantante y un piano.
+abajo. Por simplicidad, vamos a hacer sólo un cantante y un piano.
No necesitamos un @code{StaffGroup} (que simplemente agrupa un cierto
número de pautas con un corchete a la izquierda) para este conjunto,
-así que lo retiramos. Sin embargo, @emph{sí} necesitamos un cantante
-y un piano.
+así que lo retiramos. Sin embargo, @emph{sí} necesitamos pentagramas
+para un cantante y un piano.
@example
\score @{
@}
@end example
-Recuerde que usamos @code{<<} y @code{>>} en vez de @code{@{ ... @}}
-para presentar música simultánea. Y, por supuesto, queremos presentar
-las partes vocal y del piano al mismo tiempo, ¡no una después de otra!
-Observe que la construcción @code{<< ... >>} no es realmente necesaria
-para el pentagrama del cantante (pues contiene una sola expresión
-musical); sin embargo, el uso de @code{<< ... >>} en lugar de llaves
-sigue siendo necesario si la música que debe ir en el pentagrama está
-compuesta por dos expresiones simultáneas, por ejemplo dos voces
-simultáneas o una voz con letra. Escribiremos algo de música real más
-tarde; por ahora limitémonos a poner algunas notas y letra de relleno.
+Aquí hemos asignado nombres a los pentagramas: @qq{cantante} y
+@qq{piano}. Esto no es esencial en este momento, pero es un hábito
+que resulta útil cultivar de manera que podamos saber de un vistazo
+para qué es cada pentagrama.
+
+Recuerde que utilizamos @code{<< ... >>} en lugar de @code{@{ ... @}}
+para presentar la música simultánea. Esto hace que las partes vocal y
+del piano aparezcan una sobre la otra en la partitura. La
+construcción @code{<< ... >>} no sería necesaria para el pentagrama
+del cantante en el ejemplo de arriba si contiene solamente una
+expresión musical secuencial, pero se necesitarían los @code{<<
+... >>} en lugar de las llaves si la música de ese pentagrama fuese a
+contener dos o más expresiones simultáneas, p.ej. dos voces
+simultáneas, o una voz con letra. Vamos a tener una voz con letra,
+por lo que se requieren los ángulos dobles. Después añadiremos algo
+de música real; por ahora limitémonos a poner unas cuantas notas y
+texto de relleno. Si ha olvidado cómo añadir la letra, puede releer
+la sección @code{\addlyrics} de @ref{Elaborar canciones sencillas}.
@lilypond[verbatim,quote,ragged-right]
\score {
referencia a un conjunto de notas, no necesariamente notas vocales --
por ejemplo, un violín generalmente toca una voz --) y el texto de la
canción. También tenemos una pauta de piano: contiene un pentagrama
-superior (mano derecha) y un pentagrama inferior (mano izquierda).
+superior (mano derecha) y un pentagrama inferior (mano izquierda),
+aunque el pentagrama inferior aún no tiene la clave de Fa.
En este momento podríamos comenzar a meter las notas. Dentro de las
llaves que siguen a @code{\new Voice = "vocal"}, podríamos empezar
Pero si lo hiciéramos, la sección @code{\score} se haría bastante
larga y sería más difícil comprender lo que ocurre. En lugar de esto
utilizaremos identificadores o variables. Recordará que las vimos por
-primera vez en la sección anterior. Así pues, escribiendo algunas
-notas, ahora tenemos un fragmento musical de verdad:
+primera vez en la sección anterior.
+
+Para asegurarnos de que el contenido de la variable @code{text} se
+interpreta como letra, lo precedemos por @code{\lyricmode}. Como
+@code{\addlyrics}, esto activa el modo de entrada de letra. Sin ello,
+LilyPond trataría de interpretar el contenido como notas, lo que
+generaría errores (Existen algunos otros modos, véase @ruser{Modos de
+entrada}).
+
+Así pues, escribiendo algunas notas, y una clave de Fa para la mano
+izquierda, ahora tenemos un fragmento musical de verdad:
@lilypond[verbatim,quote,ragged-right]
melody = \relative c'' { r4 d8\noBeam g, c4 r }
text = \lyricmode { And God said, }
upper = \relative c'' { <g d g,>2~ <g d g,> }
-lower = \relative c { b2 e2 }
+lower = \relative c { b2 e }
\score {
<<
}
@end lilypond
-Tenga cuidado con la diferencia entre las notas, que van precedidas de
-@code{\relative} o insertadas directamente en la expresión musical, y
-la letra, que va precedida de @code{\lyricmode}. Estas instrucciones
-son esenciales para decirle a LilyPond que interprete el contenido que
-viene a continuación como música y texto, respectivamente.
-
Cuando escriba una sección @code{\score} o cuando la esté leyendo,
hágalo despacio y con cuidado. Comience por el nivel exterior y luego
trabaje sobre cada uno de los niveles interiores. También es de gran
@seealso
Referencia de la notación:
-@ruser{Structure of a score}.
+@ruser{Estructura de una partitura}.
-@node Nesting music expressions
-@subsection Nesting music expressions
+@node Anidado de expresiones musicales
+@subsection Anidado de expresiones musicales
+@translationof Nesting music expressions
@cindex pentagramas temporales
@cindex temporales, pentagramas
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff {
f8 f c
}
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
- alignAboveContext = #"main" }
- { f8 f c }
+ alignAboveContext = #"main"
+ } { f8 f c }
>>
r4 |
}
Los fragmentos de ossia se escriben a menudo sin clave y sin
indicación de compás, y generalmente en un tipo más pequeño. Esto
necesitaría más instrucciones que aún no se han visto. Véase
-@ref{Size of objects} y @ruser{Ossia staves}.
+@ref{Tamaño de los objetos} y @ruser{Pentagramas de Ossia}.
-@node On the un-nestedness of brackets and ties
-@subsection On the un-nestedness of brackets and ties
+@node Acerca de la no anidabilidad de llaves y ligaduras
+@subsection Acerca de la no anidabilidad de llaves y ligaduras
+@translationof On the un-nestedness of brackets and ties
@cindex corchetes y paréntesis, anidado de
@cindex corchetes y paréntesis, tipos de
antes de una barra insertada manualmente, y acabar antes de que acabe
la barra (algo que quizá no sea muy musical, pero es posible):
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
- { g8\( a b[ c b\) a] }
+@lilypond[quote,verbatim,ragged-right,relative=2]
+g8\( a b[ c b\) a] g4
@end lilypond
En general, los distintos tipos de corchete, y los implicados en
unión que atraviesa dos grupos especiales, y una ligadura de fraseo
que sale del interior de un grupo especial (líneas 3 y 4).
-@lilypond[quote,verbatim,fragment,ragged-right]
-{
- r16[ g16 \times 2/3 {r16 e'8] }
- g16( a \times 2/3 {b d) e' }
- g8[( a \times 2/3 {b d') e'~]}
- \times 4/5 {e'32\( a b d' e'} a'4.\)
-}
+@lilypond[quote,verbatim,ragged-right,relative=1]
+r16[ g \times 2/3 { r16 e'8] }
+g,16( a \times 2/3 { b16 d) e }
+g,8[( a \times 2/3 { b8 d) e~] } |
+\times 4/5 { e32\( a, b d e } a4.\)
@end lilypond
-@node Voices contain music
-@section Voices contain music
+@node Las voces contienen música
+@section Las voces contienen música
+@translationof Voices contain music
Igual que los cantantes, LilyPond necesita voces para cantar. En
realidad, la música para cualquier instrumento de una partitura está
fundamental de todos--.
@menu
-* I'm hearing Voices::
-* Explicitly instantiating voices::
-* Voices and vocals::
+* Oigo voces::
+* Voces explícitas::
+* Voces y música vocal::
@end menu
-@node I'm hearing Voices
-@subsection I'm hearing Voices
+@node Oigo voces
+@subsection Oigo voces
+@translationof I'm hearing Voices
@cindex polifonía
@cindex capas
supuesto; entonces ¿cuándo, exactamente, se necesitan varias voces?
En primer lugar observe este ejemplo de cuatro acordes:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+@lilypond[quote,verbatim,ragged-right,relative=1]
\key g \major
<d g>4 <d fis> <d a'> <d g>
@end lilypond
He aquí cómo dividimos los acordes anteriores en dos voces y añadimos
la nota de paso y la ligadura:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
\key g \major
-% Voice "1" Voice "2"
-<< { g4 fis8( g) a4 g } \\ { d4 d d d } >> |
+% Voice "1" Voice "2"
+<< { g4 fis8( g) a4 g } \\ { d4 d d d } >>
@end lilypond
Observe cómo las plicas de la segunda voz ahora se dirigen hacia
A continuación veamos otro ejemplo sencillo:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
\key d \minor
% Voice "1" Voice "2"
<< { r4 g g4. a8 } \\ { d,2 d4 g } >> |
hay muchas notas en cada compás podría ser mejor dividirlo en dos
voces separadas, de la siguiente manera:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
\key d \minor
<< {
% Voice "1"
ligaduras, plicas, matices dinámicos, etc., se ajusta de la forma
correcta.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
\new Staff \relative c' {
% Main voice
c16 d e f
- % Voice "1" Voice "2" Voice "3"
- << { g4 f e } \\ { r8 e4 d c8 ~ } >> |
- << { d2 e2 } \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> |
+ % Voice "1" Voice "2" Voice "3"
+ << { g4 f e } \\ { r8 e4 d c8~ } >> |
+ << { d2 e } \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
}
@end lilypond
\new Staff \relative c' {
% Main voice
c16 d e f
- << % Bar 1
+ << % Bar 1
{
\voiceOneStyle
g4 f e
\\
{
\voiceTwoStyle
- r8 e4 d c8 ~
+ r8 e4 d c8~
}
- >>
- << % Bar 2
+ >> |
+ << % Bar 2
% Voice 1 continues
- { d2 e2 }
+ { d2 e }
\\
% Voice 2 continues
- { c8 b16 a b8 g ~ g2 }
+ { c8 b16 a b8 g~ g2 }
\\
{
\voiceThreeStyle
- s4 b4 c2
+ s4 b c2
}
- >>
+ >> |
}
@end lilypond
utiliza aquí) a aspas color magenta. @code{\voiceNeutralStyle} (que
tampoco se usa aquí) devuelve todo al estilo predeterminado. Veremos
más adelante cómo el usuario puede crear instrucciones como éstas.
-Véase @ref{Visibility and color of objects} y @ref{Using variables for
-tweaks}.
+Véase @ref{Visibilidad y color de los objetos} y @ref{Uso de variables para los trucos}.
@cindex polifonía y modo relativo
@cindex relativo, modo, polifonía y
La polifonía no cambia la relación de las notas dentro de un bloque
-@code{\relative @{ @}}. La altura de cada nota aún se calcula con
+@code{\relative}. La altura de cada nota aún se calcula con
relación a la nota que le precede inmediatamente, o a la primera nota
del acorde precedente. Así, en
@lilypond[quote,ragged-right]
\new Staff \relative c'' {
\key aes \major
- << % Voice one
+ << % Voice one
{ c2 aes4. bes8 }
- \\ % Voice two
+ \\ % Voice two
{ aes2 f4 fes }
- \\ % No voice three
- \\ % Voice four
+ \\ % No voice three
+ \\ % Voice four
{
% Ignore these for now - they are explained in Ch 4
\once \override NoteColumn #'force-hshift = #0
\new Staff \relative c'' {
\key aes \major
<<
- { % Voice one
+ { % Voice one
\voiceOneStyle
c2 aes4. bes8
}
hemos aprendido, usando la construcción @code{<< \\ >>} para
introducir la música del primer compás en tres voces:
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des2 }
- >>
- <c ees aes c>1
+ { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des }
+ >> |
+ <c ees aes c>1 |
}
@end lilypond
olvidándonos de la voz tres y situando la música en la voz cuatro.
Esto se hace escribiendo otro par de barras invertidas (@code{\\}).
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
\new Staff \relative c'' {
\key aes \major
- << % Voice one
+ << % Voice one
{ c2 aes4. bes8 }
- \\ % Voice two
- { aes2 f4 fes }
- \\ % Omit Voice three
- \\ % Voice four
- { <ees c>2 des2 }
+ \\ % Voice two
+ { aes2 f4 fes }
+ \\ % Omit Voice three
+ \\ % Voice four
+ { <ees c>2 des }
>> |
<c ees aes c>1 |
}
maneras de ajustar la colocación horizontal de las notas. Aún no
estamos preparados para ver cómo corregir esto, así que dejaremos este
problema aparcado hasta una sección posterior (véase la propiedad
-@code{force-hshift} en @ref{Fixing overlapping notation}).
+@code{force-hshift} en @ref{Arreglar notación con superposiciones}).
@seealso
Referencia de la notación:
-@ruser{Multiple voices}.
+@ruser{Varias voces}.
-@node Explicitly instantiating voices
-@subsection Explicitly instantiating voices
+@node Voces explícitas
+@subsection Voces explícitas
+@translationof Explicitly instantiating voices
@funindex \voiceOne
las ligaduras de unión y de expresión y las indicaciones de dinámica:
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
% Default behavior or behavior after \oneVoice
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
\voiceOne
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
\oneVoice
- c, d8 ~ d e4 ( f g a ) b-> c
+ c,4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
\voiceTwo
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
\oneVoice
- c, d8 ~ d e4 ( f g a ) b-> c
+ c,4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
% Start simultaneous section of three voices
<<
% Continue the main voice in parallel
- { g4 f e | d2 e2) }
+ { g4 f e | d2 e) | }
% Initiate second voice
\new Voice {
- % Set stems, etc, down
+ % Set stems, etc., down
\voiceTwo
- r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
+ r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
}
% Initiate third voice
\new Voice {
% Set stems, etc, up
\voiceThree
- s2. | s4 b4 c2
+ s2. | s4 b c2 |
}
>>
}
\new Staff \relative c' {
c16^( d e f
<<
- { g4 f e | d2 e2) }
+ { g4 f e | d2 e) | }
\new Voice {
\voiceTwo
- r8 e4 d c8 ~ |
+ r8 e4 d c8~ |
<<
- {c8 b16 a b8 g ~ g2}
+ { c8 b16 a b8 g~ g2 | }
\new Voice {
\voiceThree
- s4 b4 c2
+ s4 b c2 |
}
>>
}
% Initiate first voice
\new Voice {
\voiceOne
- c16^( d e f g4 f e | d2 e2) |
+ c16^( d e f g4 f e | d2 e) |
}
% Initiate second voice
\new Voice {
% Set stems, etc, down
\voiceTwo
- s4 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 |
+ s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
}
% Initiate third voice
\new Voice {
% Set stems, etc, up
\voiceThree
- s1 | s4 b4 c2 |
+ s1 | s4 b c2 |
}
>>
@end lilypond
-@subsubheading Note columns
+@subsubheading Columnas de notas
@cindex columna de notas
@cindex colisiones de notas
@code{\shiftOnn} y @code{\shiftOnnn} definen niveles adicionales de
desplazamiento que se pueden especificar temporalmente para resolver
-colisiones en situaciones complejas (véase @ref{Real music example}).
+colisiones en situaciones complejas (véase @ref{Ejemplos reales de música}).
Una columna de notas puede contener sólo una nota (o acorde) de una
voz con las plicas hacia arriba y una not (o acorde) de una voz con
@seealso
Referencia de la notación:
-@ruser{Multiple voices}.
+@ruser{Varias voces}.
-@node Voices and vocals
-@subsection Voices and vocals
+@node Voces y música vocal
+@subsection Voces y música vocal
+@translationof Voices and vocals
La música vocal presenta una dificultad especial: tenemos que combinar
explícitamente la letra y las notas mediante @code{\lyricsto@{@}},
usando el nombre asignado a la voz.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
<<
- \new Voice = "one" \relative c'' {
- \autoBeamOff
- \time 2/4
- c4 b8. a16 g4. f8 e4 d c2
+ \new Voice = "one" {
+ \relative c'' {
+ \autoBeamOff
+ \time 2/4
+ c4 b8. a16 | g4. f8 | e4 d | c2 |
+ }
}
\new Lyrics \lyricsto "one" {
- No more let sins and sor -- rows grow.
+ No more let | sins and | sor -- rows | grow. |
}
>>
@end lilypond
no como música.
@lilypond[quote,verbatim]
-global = { \time 6/8 \partial 8 \key f \major}
+global = { \key f \major \time 6/8 \partial 8 }
+
SopOneMusic = \relative c'' {
- c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 }
-SopTwoMusic = \relative c' {
- r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' }
+ c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+}
SopOneLyrics = \lyricmode {
- Let | flee -- cy flocks the | hills a -- dorn, __ }
+ Let | flee -- cy flocks the | hills a -- dorn, __
+}
+SopTwoMusic = \relative c' {
+ r8 | r4. r4 c8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
+}
SopTwoLyrics = \lyricmode {
- Let | flee -- cy flocks the | hills a -- dorn, }
+ Let | flee -- cy flocks the | hills a -- dorn,
+}
\score {
\new ChoirStaff <<
@lilypond[quote,verbatim]
-TimeKey = { \time 4/4 \partial 4 \key c \major}
-SopMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
-VerseOne = \lyricmode {
- E -- | ter -- nal fa -- ther, | strong to save, }
-VerseTwo = \lyricmode {
- O | Christ, whose voice the | wa -- ters heard, }
-VerseThree = \lyricmode {
- O | Ho -- ly Spi -- rit, | who didst brood }
-VerseFour = \lyricmode {
- O | Tri -- ni -- ty of | love and pow'r }
+keyTime = { \key c \major \time 4/4 \partial 4 }
+
+SopMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+
+VerseOne =
+ \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
+VerseTwo =
+ \lyricmode { O | Christ, whose voice the | wa -- ters heard, }
+VerseThree =
+ \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood }
+VerseFour =
+ \lyricmode { O | Tri -- ni -- ty of | love and pow'r }
\score {
\new ChoirStaff <<
\new Staff <<
\clef "treble"
- \new Voice = "Sop" { \voiceOne \TimeKey \SopMusic }
+ \new Voice = "Sop" { \voiceOne \keyTime \SopMusic }
\new Voice = "Alto" { \voiceTwo \AltoMusic }
\new Lyrics \lyricsto "Sop" { \VerseOne }
\new Lyrics \lyricsto "Sop" { \VerseTwo }
>>
\new Staff <<
\clef "bass"
- \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic }
- \new Voice = "Bass" { \voiceTwo \BassMusic }
- >>
- >>
-}
-@end lilypond
-
-@cindex estrofa y estribillo
-
-Finalizamos con un ejemplo que muestra cómo podemos codificar una
-estrofa para solista seguida de un estribillo en dos partes sobre dos
-pentagramas. El posicionado de las secciones secuencial y simultánea
-para conseguirlo dentro de una sola partitura es un poco enrevesado,
-por tanto siga esta explicación con todo cuidado.
-
-Comenzamos el ejemplo con un bloque de partitura que contiene un
-@code{ChoirStaff}, pues queremos que aparezca un corchete al comienzo
-de la parte de coro. Normalmente necesitaríamos dobles ángulos
-después de @code{\new ChoirStaff} para meter dentro todos los
-pentagramas en paralelo, pero aquí queremos posponer el paralelismo
-mientras dura el solo y por ello usaremos llaves, aunque aquí unos
-ángulos dobles no harían daño. Dentro del @code{ChoirStaff} queremos
-en primer lugar el pentagrama que va a contener la estrofa. Debe
-contener notas y letra en paralelo, así que necesitamos dobles ángulos
-encerrando el @code{\new Voice} y el @code{\new Lyrics} para que den
-comienzo al mismo tiempo:
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-versewords = \lyricmode {
- One two three four five six
-}
-\score {
- \new ChoirStaff {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes \break
- }
- \new Lyrics \lyricsto verse {
- \versewords
- }
- >>
- }
-}
-@end lilypond
-
-Con esto tenemos la línea de la estrofa.
-
-Ahora deseamos continuar con estribilloA (la primera parte del
-estribillo) sobre el mismo pentagrama, mientras un segundo pentagrama
-aparece en paralelo con él para estribilloB (estribillo, segunda parte),
-por lo que ésta es una sección paralela que se debe situar
-inmediatamente a continuación del salto de línea @code{\break} en la
-voz de la estrofa. ¡Sí, @emph{dentro} de la voz de la estrofa! He
-aquí dicha sección paralela. Se podrían introducir más pentagramas de
-la misma forma.
-
-@example
-<<
- \notas_estribilloA
- \new Lyrics \lyricsto estrofa @{
- \letra_estribilloA
- @}
- \new Staff <<
- \new Voice = "estribilloB" @{
- \notas_estribilloB
- @}
- \new Lyrics \lyricsto "estribilloB" @{
- \letra_estribilloB
- @}
- >>
->>
-@end example
-
-Aquí tenemos el resultado final con dos pentagramas en el estribillo
-mostrando cómo la sección paralela se posiciona dentro de la voz de la
-estrofa:
-
-@lilypond[quote,verbatim, ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
- \time 2/4
- c c g g \bar "|."
-}
-refrainnotesB = \relative c {
- \clef "bass"
- \key g \major
- c e d d
-}
-versewords = \lyricmode {
- One two three four five six
-}
-refrainwordsA = \lyricmode {
- la la la la
-}
-refrainwordsB = \lyricmode {
- dum dum dum dum
-}
-\score {
- \new ChoirStaff {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes \break
- <<
- \refrainnotesA
- \new Lyrics \lyricsto "verse" {
- \refrainwordsA
- }
- \new Staff <<
- \new Voice = "refrainB" {
- \refrainnotesB
- }
- \new Lyrics \lyricsto "refrainB" {
- \refrainwordsB
- }
- >>
- >>
- }
- \new Lyrics \lyricsto "verse" {
- \versewords
- }
- >>
- }
-}
-@end lilypond
-
-@cindex libro
-@cindex book, ejemplo de su uso
-@funindex \book
-@funindex book
-
-Sin embargo, y aunque esto es un interesante y útil ejercicio
-destinado a ayudarle a comprender cómo funcionan los bloques
-secuenciales y simultáneos, en la práctica quizá nos decidiríamos por
-codificarlo como dos bloques @code{\score} dentro de un bloque
-@code{\book} implícito, como sigue:
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
- \time 2/4
- c c g g \bar "|."
-}
-refrainnotesB = \relative c {
- \clef "bass"
- \key g \major
- c e d d
-}
-versewords = \lyricmode {
- One two three four five six
-}
-refrainwordsA = \lyricmode {
- la la la la
-}
-refrainwordsB = \lyricmode {
- dum dum dum dum
-}
-\score {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes
- }
- \new Lyrics \lyricsto "verse" {
- \versewords
- }
- >>
-}
-
-\score {
- \new ChoirStaff <<
- \new Staff <<
- \new Voice = "refrainA" {
- \refrainnotesA
- }
- \new Lyrics \lyricsto "refrainA" {
- \refrainwordsA
- }
- >>
- \new Staff <<
- \new Voice = "refrainB" {
- \refrainnotesB
- }
- \new Lyrics \lyricsto "refrainB" {
- \refrainwordsB
- }
+ \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
>>
>>
}
@seealso
Referencia de la notación:
-@ruser{Vocal music}.
+@ruser{Música vocal}.
-@node Contexts and engravers
-@section Contexts and engravers
+@node Contextos y grabadores
+@section Contextos y grabadores
+@translationof Contexts and engravers
Los contextos y grabadores se han mencionado de manera informal en
secciones anteriores; ahora tan sólo vamos a ver estos conceptos con
LilyPond.
@menu
-* Contexts explained::
-* Creating contexts::
-* Engravers explained::
-* Modifying context properties::
-* Adding and removing engravers::
+* Explicación de los contextos::
+* Crear contextos::
+* Explicación de los grabadores::
+* Modificar las propiedades de los contextos::
+* Añadir y eliminar grabadores::
@end menu
-@node Contexts explained
-@subsection Contexts explained
+@node Explicación de los contextos
+@subsection Explicación de los contextos
+@translationof Contexts explained
@cindex contextos, explicación de los
el archivo de entrada. Por ejemplo, compare la entrada y la salida
del siguiente ejemplo:
-@lilypond[quote,verbatim,relative=2,fragment]
-cis4 cis2. g4
+@lilypond[quote,verbatim,relative=2]
+cis4 cis2. | a4 a2. |
@end lilypond
La entrada es bastante escueta, pero en la salida se han añadido las
información musical se analiza de izquierda a derecha de igual forma
que un intérprete lee la partitura. Mientras se lee el código de
entrada, el programa recuerda dónde están los límites de los compases,
-y qué alturas requieren altereaciones accidentales explícitas. Esta
+y qué alturas requieren alteraciones accidentales explícitas. Esta
información se debe conservar a varios niveles. Por ejemplo, una
alteración accidental afecta solamente a un pentagrama, mientras que
una línea divisoria debe estar sincronizada a lo largo de todo el
@seealso
Referencia de la notación:
-@ruser{Contexts explained}.
+@ruser{Explicación de los contextos}.
-@node Creating contexts
-@subsection Creating contexts
+@node Crear contextos
+@subsection Crear contextos
+@translationof Creating contexts
@funindex \new
@funindex new
@cindex creación de contextos
@cindex contextos, creación de
-Sólo puede haber un contexto en el nivel más alto: el contexto de
-partitura @code{Score}. Se crea con la instrucción @code{\score} o,
-en partituras sencillas, se crea automáticamente.
+En un archivo de entrada, el bloque de partitura, que se presenta
+precedido por la instrucción @code{\score}, contiene una sola
+expresión musical y una definición de salida asociada (bien un bloque
+@code{\layout} o bien un bloque @code{\midi}). El contexto
+@code{Score} se suele dejar que se cree automáticamente cuando
+comienza la interpretación de esa expresión musical.
Para partituras que solamente tienen una voz y un pentagrama, podemos
-dejar que los contextos @code{Voice} y @code{Staff} se creen
+también dejar que los contextos @code{Voice} y @code{Staff} se creen
automáticamente, pero para partituras más complejas es necesario
crearlos a mano. La instrucción más simple que hace esto es
@code{\new}. Se antepone a una expresión musical, por ejemplo
interpretar la @var{expresión_musical} que está dentro de ese
contexto.
-Observe que no hay ninguna instrucción @code{\new Score}; el contexto
-@code{Score} único en el nivel más alto se introduce con
-@code{\score}.
-
+@warning{No se debe usar @bs{}@code{new Score} porque el contexto
+@code{Score} esencial del nivel superior ya se crea automáticamente al
+interpretarse la expresión musical que está dentro del bloque
+@bs{}@code{score}. Los valores predeterminados de propiedades de
+contexto válidos para toda la partitura se pueden cambiar dentro del
+bloque @bs{}@code{layout}. Véase @ref{Modificar las propiedades de
+los contextos}.}
En las secciones anteriores ha podido ver muchos ejemplos prácticos que
creaban nuevos contextos de @code{Staff} y de @code{Voice}, pero para
<< % start of simultaneous staves section
\time 2/4
\new Staff { % create RH staff
- \key g \minor
\clef "treble"
+ \key g \minor
\new Voice { % create voice for RH notes
\relative c'' { % start of RH notes
d4 ees16 c8. |
} % end of RH voice
} % end of RH staff
\new Staff << % create LH staff; needs two simultaneous voices
- \key g \minor
\clef "bass"
+ \key g \minor
\new Voice { % create LH voice one
\voiceOne
\relative g { % start of LH voice one notes
debe ir entre comillas p.ej. @code{\new Staff = "MiPentagrama 1"
@var{expresión_musical}}. El nombre identificativo se utiliza para
referirnos más tarde a esa instancia en particular de un contexto.
-Hemos visto esto en la sección acerca de la letra, en @ref{Voices and
-vocals}.
+Hemos visto esto en la sección acerca de la letra, en @ref{Voces y música vocal}.
@seealso
Referencia de la notación:
-@ruser{Creating contexts}.
+@ruser{Crear contextos}.
-@node Engravers explained
-@subsection Engravers explained
+@node Explicación de los grabadores
+@subsection Explicación de los grabadores
+@translationof Engravers explained
@cindex grabadores
@rinternals{Engravers and Performers}.
-@node Modifying context properties
-@subsection Modifying context properties
+@node Modificar las propiedades de los contextos
+@subsection Modificar las propiedades de los contextos
+@translationof Modifying context properties
@cindex contexto, propiedades de
@cindex contexto, propiedades de, modificación
Donde el @emph{NombreDelContexto} es normalmente @code{Score},
@code{Staff} o @code{Voice}. Se puede omitir, en cuyo caso se supone
-que es @code{Voice}.
+que es el contexto en curso (normalmente @code{Voice}).
Los nombres de las propiedades de contexto consisten en palabras
unidas sin ningún guión o barra baja, y donde todas las palabras
<<
\new Staff \relative c'' {
\set Staff.instrumentName = #"Soprano"
- c4 c
- }
+ c2 c
+ }
\new Staff \relative c' {
- \set instrumentName = #"Alto" % Wrong!
- d4 d
- }
+ \set instrumentName = #"Alto" % Wrong!
+ d2 d
+ }
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative c'' {
- ais4 aes
- }
+ ais2 aes
+ }
\new Staff \relative c'' {
\set Staff.extraNatural = ##f
- ais4 aes
- }
+ ais2 aes
+ }
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative c'' {
- ais4 aes
- }
+ ais2 aes
+ }
\new Staff \relative c'' {
\set Score.extraNatural = ##f
- ais4 aes
- }
+ ais2 aes
+ }
>>
@end lilypond
(entre otras cosas) varias veces. El cambio se toma a partir del
valor predeterminado, no el valor en curso.
-@lilypond[quote,verbatim,ragged-right,relative=1,fragment]
-c4
+@lilypond[quote,verbatim,ragged-right,relative=1]
+c4 d
% make note heads smaller
\set fontSize = #-4
-d e
+e4 f |
% make note heads larger
\set fontSize = #2.5
-f g
+g4 a
% return to default size
\unset fontSize
-a b
+b4 c |
@end lilypond
Hemos podido ver cómo establecer los valores de diversos tipos de
adelante que el texto realmente se puede especificar de una forma
mucho más general utilizando la potentísima instrucción @code{markup}.
-@subsubheading Setting context properties with @code{\with}
+@subsubheading Cambiar las propiedades de un contexto con @code{\with}
@funindex \with
@funindex with
@cindex contexto, propiedades de, establecimiento con \with
-Las propiedades de contexto también se pueden establecer en el momento
+El valor predeterminado de las propiedades de contexto se puede establecer en el momento
en que se crea el contexto. A veces esta forma de establecer el valor
de una propiedad es mucho más clara, si ha de quedar fijo durante todo
el tiempo que dure el contexto. Cuando se crea un contexto con una
instrucción @code{\new} puede ir inmediatamente seguido de un bloque
-@code{\with @{ .. @}} en el que se establecen los valores de las
+@code{\with @{ .. @}} en el que se establecen los valores predeterminados de las
propiedades. Por ejemplo, si queremos suprimir la impresión de
becuadros adicionales para toda la duración de un pentagrama, podemos
escribir:
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff
- \relative c'' {
- gis ges aes ais
+ \new Staff {
+ \relative c'' {
+ gis4 ges aes ais
+ }
}
- \new Staff \with { extraNatural = ##f }
- \relative c'' {
- gis ges aes ais
+ \new Staff \with { extraNatural = ##f } {
+ \relative c'' {
+ gis4 ges aes ais
+ }
}
>>
@end lilypond
Las propiedades ajustadas de esta manera aún pueden cambiarse
-dinámicamente utilizando @code{\set} y ser devueltas a sus valores
-predeterminados mediante @code{\unset}.
+dinámicamente utilizando @code{\set} y ser devueltas al valor
+predeterminados que se estableció en el bloque @code{\with} mediante
+@code{\unset}.
@cindex fontSize (tamaño de la tipografía)
@cindex fuente, tamaño de la
@cindex tamaño de la fuente
-La propiedad @code{fontSize} se trata de forma distinta. Si se ajusta
-dentro de una cláusula @code{\with}, tiene el efecto de reiniciar el
-valor predeterminado del tamaño de la fuente tipográfica. Si más
-tarde se modifica con @code{\set}, este nuevo valor predeterminado
-puede restablecerse con la instrucción @code{\unset fontSize}.
+Así pues, si la propiedad @code{fontSize} se ajusta dentro de una
+cláusula @code{\with}, tiene el efecto de reiniciar el valor
+predeterminado del tamaño de la fuente tipográfica. Si más tarde se
+modifica con @code{\set}, este nuevo valor predeterminado puede
+restablecerse con la instrucción @code{\unset fontSize}.
-@subsubheading Setting context properties with @code{\context}
+@subsubheading Cambiar las propiedades de un contexto con @code{\context}
@cindex contextos, establecer propiedades de, con \context
@funindex \context
}
@end lilypond
+Si se quiere aplicar la sobreescritura de propiedades a todos los
+pentagramas de la partitura:
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff {
+ \relative c'' {
+ gis4 ges aes ais
+ }
+ }
+ \new Staff {
+ \relative c'' {
+ gis4 ges aes ais
+ }
+ }
+ >>
+ \layout {
+ \context {
+ \Score extraNatural = ##f
+ }
+ }
+}
+@end lilypond
+
@noindent
Las propiedades de contexto establecidas de esta forma se pueden
sobreescribir para ejemplares concretos de contextos mediante
@seealso
Referencia de la notación:
-@ruser{Changing context default settings}.
+@ruser{Cambiar los valores por omisión de los contextos},
@c FIXME
@c uncomment when backslash-node-name issue is resolved -pm
-@c @ruser{The set command}.
+@ruser{La instrucción set}.
Referencia de funcionamiento interno:
@rinternals{Contexts},
@rinternals{Tunable context properties}.
-@node Adding and removing engravers
-@subsection Adding and removing engravers
+@node Añadir y eliminar grabadores
+@subsection Añadir y eliminar grabadores
+@translationof Adding and removing engravers
@cindex grabadores, adición
@cindex grabadores, eliminación
contexto, ya no podrá producir su salida impresa. Es una forma algo
radical de modificar la salida, pero a veces puede ser útil.
-@subsubheading Changing a single context
+@subsubheading Cambiar un solo contexto
Para eliminar un grabador de un contexto único, usamos la instrucción
@code{\with} situada inmediatamente después de la instrucción que crea
\remove Staff_symbol_engraver
}
\relative c' {
- c4
+ c4 d
\set fontSize = #-4 % make note heads smaller
- d e
+ e4 f |
\set fontSize = #2.5 % make note heads larger
- f g
+ g4 a
\unset fontSize % return to default size
- a b
+ b4 c |
}
@end lilypond
\new Staff <<
\new Voice \with {
\consists Ambitus_engraver
+ } {
+ \relative c'' {
+ \voiceOne
+ c4 a b g
+ }
}
- \relative c'' {
- \voiceOne
- c a b g
- }
- \new Voice
- \relative c' {
- \voiceTwo
- c e d f
+ \new Voice {
+ \relative c' {
+ \voiceTwo
+ c4 e d f
+ }
}
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
- \consists Ambitus_engraver
- }
- <<
- \new Voice
- \relative c'' {
- \voiceOne
- c a b g
+ \consists Ambitus_engraver
+}
+<<
+ \new Voice {
+ \relative c'' {
+ \voiceOne
+ c4 a b g
+ }
}
- \new Voice
- \relative c' {
- \voiceTwo
- c e d f
+ \new Voice {
+ \relative c' {
+ \voiceTwo
+ c4 e d f
+ }
}
>>
@end lilypond
-@subsubheading Changing all contexts of the same type
+@subsubheading Cambiar todos los contextos del mismo tipo
@funindex \layout
@funindex layout
@lilypond[quote,verbatim,ragged-right]
\score {
<<
- \new Staff <<
- \relative c'' { c a b g }
- >>
- \new Staff <<
- \relative c' { c a b g }
- >>
- \new Staff <<
+ \new Staff {
+ \relative c'' {
+ c4 a b g
+ }
+ }
+ \new Staff {
+ \relative c' {
+ c4 a b g
+ }
+ }
+ \new Staff {
\clef "G_8"
- \relative c' { c a b g }
- >>
- \new Staff <<
+ \relative c' {
+ c4 a b g
+ }
+ }
+ \new Staff {
\clef "bass"
- \relative c { c a b g }
- >>
+ \relative c {
+ c4 a b g
+ }
+ }
>>
\layout {
\context {
@seealso
Referencia de la notación:
-@ruser{Modifying context plug-ins},
-@ruser{Changing context default settings}.
+@ruser{Modificar los complementos (plug-ins) de contexto},
+@ruser{Cambiar los valores por omisión de los contextos}.
+@knownissues
+Los grabadores @code{Stem_engraver} y @code{Beam_engraver}
+(de plica y de barra) adjuntan a la cabeza de las notas
+los objetos que crean. Si se suprime el grabador de cabezas de nota
+@code{Note_heads_engraver}, no se produce ninguna cabeza y por tanto
+no se crean tampoco plicas ni barras.
-@node Extending the templates
-@section Extending the templates
+
+@node Extender las plantillas
+@section Extender las plantillas
+@translationof Extending the templates
Ha leído el tutorial y ahora sabe escribir música. Pero ¿cómo puede
poner los pentagramas que quiere? Las plantillas están muy bien, pero
¿qué ocurre si quiere algo que no está en una de ellas? Bien, puede
-encontrar montañas de plantillas (véase @ref{Templates}) que le pueden
+encontrar montañas de plantillas (véase @ref{Plantillas}) que le pueden
servir como punto de partida. Pero ¿y si quiere algo que no está
contemplado aquí? Continúe leyendo.
@menu
-* Soprano and cello::
-* Four-part SATB vocal score::
-* Building a score from scratch::
+* Soprano y violoncello::
+* Partitura vocal a cuatro voces SATB::
+* Crear una partitura partiendo de cero::
+* Ahorrar tecleo mediante variables y funciones::
+* Partituras y particellas::
@end menu
-@node Soprano and cello
-@subsection Soprano and cello
+@node Soprano y violoncello
+@subsection Soprano y violoncello
+@translationof Soprano and cello
@cindex plantilla, modificar
@cindex modificar plantillas
@example
\version @w{"@version{}"}
melodia = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
@example
\version @w{"@version{}"}
melodia = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
@example
\version @w{"@version{}"}
musicaSoprano = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
@}
musicaCello = \relative c @{
- \clef bass
+ \clef "bass"
\key c \major
\time 4/4
-
d4 g fis8 e d4
@}
<<
\new Voice = "uno" @{
\autoBeamOff
- \sopranoMusic
+ \musicaSoprano
@}
\new Lyrics \lyricsto "uno" \letraSoprano
>>
@c Indentation in this example is deliberately poor
@example
-\score@{
+\score @{
<<
<<
\new Voice = "uno" @{
@lilypond[quote,verbatim,ragged-right,addversion]
sopranoMusic = \relative c' {
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
}
celloMusic = \relative c {
- \clef bass
+ \clef "bass"
\key c \major
\time 4/4
d4 g fis8 e d4
@seealso
Las plantillas de inicio se pueden encontrar en el apéndice
-@q{Templates}, véase @ref{Single staff}.
+@q{Templates}, véase @ref{Pentagrama único}.
-@node Four-part SATB vocal score
-@subsection Four-part SATB vocal score
+@node Partitura vocal a cuatro voces SATB
+@subsection Partitura vocal a cuatro voces SATB
+@translationof Four-part SATB vocal score
La mayor parte de las partituras vocales escritas para coro mixto a
cuatro voces con acompañamiento orquestal, como el «Elías» de
@c The following should appear as music without code
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }
+
sopranoMusic = \relative c'' {
\clef "treble"
r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
- Wor -- thy is the lamb that was slain
+ Wor -- thy | is the lamb | that was slain |
}
+
altoMusic = \relative a' {
\clef "treble"
r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopranoWords
+
tenorMusic = \relative c' {
\clef "G_8"
r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
+
bassMusic = \relative c' {
\clef "bass"
r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
+
upper = \relative a' {
\clef "treble"
\global
<d fis d'>4. <d fis d'>8 <a d a'>2 |
<g cis g'>4 <a d fis> <a cis e>2 |
}
+
lower = \relative c, {
\clef "bass"
\global
\new ChoirStaff <<
\new Staff = "sopranos" <<
\set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" { \global \sopranoMusic }
+ \new Voice = "sopranos" {
+ \global
+ \sopranoMusic
+ }
>>
- \new Lyrics \lyricsto "sopranos" { \sopranoWords }
+ \new Lyrics \lyricsto "sopranos" {
+ \sopranoWords
+ }
\new Staff = "altos" <<
\set Staff.instrumentName = #"Alto"
- \new Voice = "altos" { \global \altoMusic }
+ \new Voice = "altos" {
+ \global
+ \altoMusic
+ }
>>
\new Lyrics \lyricsto "altos" { \altoWords }
\new Staff = "tenors" <<
\set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" { \global \tenorMusic }
+ \new Voice = "tenors" {
+ \global
+ \tenorMusic
+ }
>>
\new Lyrics \lyricsto "tenors" { \tenorWords }
\new Staff = "basses" <<
\set Staff.instrumentName = #"Bass"
- \new Voice = "basses" { \global \bassMusic }
+ \new Voice = "basses" {
+ \global
+ \bassMusic
+ }
>>
- \new Lyrics \lyricsto "basses" { \bassWords }
+ \new Lyrics \lyricsto "basses" {
+ \bassWords
+ }
>> % end ChoirStaff
-
\new PianoStaff <<
\set PianoStaff.instrumentName = #"Piano"
\new Staff = "upper" \upper
Ninguna de las plantillas proporciona esta disposición con exactitud.
La más parecida es @q{partitura vocal SATB y reducción de piano
-automática} (véase @ref{Vocal ensembles}), pero necesitamos cambiar la
+automática} (véase @ref{Conjuntos vocales}), pero necesitamos cambiar la
disposición y añadir un acompañamiento de piano que no esté derivado
automáticamente de las partes vocales. Las variables que contienen la
música y la letra de las partes vocales es adecuada, pero tendremos
Al hacerlo así obtenemos el ChoirStaff siguiente:
@example
- \new ChoirStaff <<
- \new Staff = "sopranos" <<
- \set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" @{ \global \musicaSoprano @}
- >>
- \new Lyrics \lyricsto "sopranos" @{ \latraSoprano @}
- \new Staff = "altos" <<
- \set Staff.instrumentName = #"Alto"
- \new Voice = "altos" @{ \global \musicaAlto @}
- >>
- \new Lyrics \lyricsto "altos" @{ \letraAlto @}
- \new Staff = "tenores" <<
- \set Staff.instrumentName = #"Tenor"
- \new Voice = "tenores" @{ \global \musicaTenor @}
- >>
- \new Lyrics \lyricsto "tenores" @{ \letraTenor @}
- \new Staff = "bajos" <<
- \set Staff.instrumentName = #"Bass"
- \new Voice = "bajos" @{ \global \musicaBajo @}
- >>
- \new Lyrics \lyricsto "bajos" @{ \letraBajo @}
- >> % fin del ChoirStaff
+\new ChoirStaff <<
+ \new Staff = "sopranos" <<
+ \set Staff.instrumentName = #"Soprano"
+ \new Voice = "sopranos" @{
+ \global
+ \musicaSoprano
+ @}
+ >>
+ \new Lyrics \lyricsto "sopranos" @{
+ \letraSoprano
+ @}
+ \new Staff = "altos" <<
+ \set Staff.instrumentName = #"Alto"
+ \new Voice = "altos" @{
+ \global
+ \musicaAlto
+ @}
+ >>
+ \new Lyrics \lyricsto "altos" @{
+ \letraAlto
+ @}
+ \new Staff = "tenors" <<
+ \set Staff.instrumentName = #"Tenor"
+ \new Voice = "tenors" @{
+ \global
+ \musicaTenor
+ @}
+ >>
+ \new Lyrics \lyricsto "tenors" @{
+ \letraTenor
+ @}
+ \new Staff = "bajos" <<
+ \set Staff.instrumentName = #"Bajo"
+ \new Voice = "bajos" @{
+ \global
+ \musicaBajo
+ @}
+ >>
+ \new Lyrics \lyricsto "bajos" @{
+ \letraBajo
+ @}
+>> % fin del ChoirStaff
@end example
A continuación debemos trabajar sobre la parte de piano. Es fácil:
<< % combinar los grupos ChoirStaff y PianoStaff uno sobre el otro
\new ChoirStaff <<
\new Staff = "sopranos" <<
- \new Voice = "sopranos" @{ \global \musicaSoprano @}
+ \new Voice = "sopranos" @{
+ \global
+ \musicaSoprano
+ @}
>>
- \new Lyrics \lyricsto "sopranos" @{ \letraSoprano @}
+ \new Lyrics \lyricsto "sopranos" @{
+ \letraSoprano
+ @}
\new Staff = "altos" <<
- \new Voice = "altos" @{ \global \musicaAlto @}
+ \new Voice = "altos" @{
+ \global
+ \musicaAlto
+ @}
>>
- \new Lyrics \lyricsto "altos" @{ \letraAlto @}
+ \new Lyrics \lyricsto "altos" @{
+ \letraAlto
+ @}
\new Staff = "tenores" <<
\clef "G_8" % clave de tenor
- \new Voice = "tenores" @{ \global \musicaTenor @}
+ \new Voice = "tenores" @{
+ \global
+ \musicaTenor
+ @}
>>
- \new Lyrics \lyricsto "tenores" @{ \letraTenor @}
+ \new Lyrics \lyricsto "tenores" @{
+ \letraTenor
+ @}
\new Staff = "bajos" <<
\clef "bass"
- \new Voice = "bajos" @{ \global \musicaBajo @}
+ \new Voice = "bajos" @{
+ \global
+ \musicaBajo
+ @}
>>
- \new Lyrics \lyricsto "bajos" @{ \letraBajo @}
+ \new Lyrics \lyricsto "bajos" @{
+ \letraBajo
+ @}
>> % fin del ChoirStaff
\new PianoStaff <<
r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
- Wor -- thy is the lamb that was slain
+ Wor -- thy | is the lamb | that was slain |
}
altoMusic = \relative a' {
\clef "treble"
\new ChoirStaff <<
\new Staff = "sopranos" <<
\set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" { \global \sopranoMusic }
+ \new Voice = "sopranos" {
+ \global
+ \sopranoMusic
+ }
>>
- \new Lyrics \lyricsto "sopranos" { \sopranoWords }
+ \new Lyrics \lyricsto "sopranos" {
+ \sopranoWords
+ }
\new Staff = "altos" <<
\set Staff.instrumentName = #"Alto"
- \new Voice = "altos" { \global \altoMusic }
+ \new Voice = "altos" {
+ \global
+ \altoMusic
+ }
>>
- \new Lyrics \lyricsto "altos" { \altoWords }
+ \new Lyrics \lyricsto "altos" {
+ \altoWords
+ }
\new Staff = "tenors" <<
\set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" { \global \tenorMusic }
+ \new Voice = "tenors" {
+ \global
+ \tenorMusic
+ }
>>
- \new Lyrics \lyricsto "tenors" { \tenorWords }
+ \new Lyrics \lyricsto "tenors" {
+ \tenorWords
+ }
\new Staff = "basses" <<
\set Staff.instrumentName = #"Bass"
- \new Voice = "basses" { \global \bassMusic }
+ \new Voice = "basses" {
+ \global
+ \bassMusic
+ }
>>
- \new Lyrics \lyricsto "basses" { \bassWords }
+ \new Lyrics \lyricsto "basses" {
+ \bassWords
+ }
>> % end ChoirStaff
\new PianoStaff <<
@end lilypond
-@node Building a score from scratch
-@subsection Building a score from scratch
+@node Crear una partitura partiendo de cero
+@subsection Crear una partitura partiendo de cero
+@translationof Building a score from scratch
@cindex plantilla, escribir su propia
@cindex ejemplo de escritura de una partitura
title = "Jesu, meine Freude"
composer = "J S Bach"
@}
-TimeKey = @{ \time 4/4 \key c \minor @}
-MusicaManualUnoVozUno = @{s1@}
-MusicaManualUnoVozDos = @{s1@}
-MusicaManualDos = @{s1@}
-MusicaPedal = @{s1@}
+keyTime = @{ \key c \minor \time 4/4 @}
+MusicaManualUnoVozUno = @{ s1 @}
+MusicaManualUnoVozDos = @{ s1 @}
+MusicaManualDos = @{ s1 @}
+MusicaPedal = @{ s1 @}
\score @{
@}
segunda sólo una.
@example
- \new PianoStaff <<
- \new Staff = "ManualUno" <<
- \new Voice @{ \MusicaManualUnoVozUno @}
- \new Voice @{ \MusicaManualUnoVozDos @}
- >> % fin del contexto de Staff ManualUno
- \new Staff = "ManualDos" <<
- \new Voice @{ \MusicaManualDos @}
- >> % fin del contexto de Staff ManualDos
- >> % fin del contexto de PianoStaff
+\new PianoStaff <<
+ \new Staff = "ManualUno" <<
+ \new Voice @{
+ \MusicaManualUnoVozUno
+ @}
+ \new Voice @{
+ \MusicaManualUnoVozDos
+ @}
+ >> % fin del contexto de Staff ManualUno
+ \new Staff = "ManualDos" <<
+ \new Voice @{
+ \MusicaManualDos
+ @}
+ >> % fin del contexto de Staff ManualDos
+>> % fin del contexto de PianoStaff
@end example
Después, tenemos que añadir un pentagrama para el órgano de pedal.
<< % el grupo PianoStaff y el pentagrama de Pedal son simultáneos
\new PianoStaff <<
\new Staff = "ManualUno" <<
- \new Voice @{ \MusicaManualUnoVozUno @}
- \new Voice @{ \MusicaManualUnoVozDos @}
+ \new Voice @{
+ \MusicaManualUnoVozUno
+ @}
+ \new Voice @{
+ \MusicaManualUnoVozDos
+ @}
>> % fin del contexto de Staff ManualUno
\new Staff = "ManualDos" <<
- \new Voice @{ \MusicaManualDos @}
+ \new Voice @{
+ \MusicaManualDos
+ @}
>> % fin del contexto de Staff ManualDos
>> % fin del contexto de PianoStaff
\new Staff = "OrganoPedal" <<
- \new Voice @{ \MusicaOrganoPedal @}
+ \new Voice @{
+ \MusicaOrganoPedal
+ @}
>>
>>
@end example
<< % el grupo PianoStaff y el pentagrama de Pedal son simultáneos
\new PianoStaff <<
\new Staff = "ManualUno" <<
- \TimeKey % establecer compás y tonalidad
+ \keyTime % establecer compás y tonalidad
\clef "treble"
- \new Voice @{ \voiceOne \MusicaManualUnoVozUno @}
- \new Voice @{ \voiceTwo \MusicaManualUnoVozDos @}
+ \new Voice @{
+ \voiceOne
+ \MusicaManualUnoVozUno
+ @}
+ \new Voice @{
+ \voiceTwo
+ \MusicaManualUnoVozDos
+ @}
>> % fin del contexto de Staff ManualUno
\new Staff = "ManualDos" <<
- \TimeKey
+ \keyTime
+ \clef "bass"
+ \new Voice @{
+ \MusicaManualDos
+ @}
+ >> % fin del contexto de Staff ManualDos
+ >> % fin del contexto de PianoStaff
+ \new Staff = "OrganoPedal" <<
+ \keyTime
+ \clef "bass"
+ \new Voice @{
+ \MusicaOrganoPedal
+ @}
+ >> % fin del pentagrama de OrganoPedal
+ >>
+@} % fin del contexto Score
+@end example
+
+@cindex ampliabilidad de las pautas
+@cindex pautas, ampliabilidad
+
+La disposición anterior de los pentagramas de órgano es casi perfecta;
+sin embargo, existe un ligero defecto que no es visible cuando se
+observa un solo sistema: la distancia entre el pentagrama de pedal y
+el de la mano izquierda debiera ser aproximadamente la misma que la
+que existe entre los pentagramas de las manos izquierda y derecha.
+Concretamente, la ampliabilidad de los pentagramas dentro de un
+contexto @code{PianoStaff} es limitada (de forma que la distancia
+entre los pentagramas de las manos izquierda y derecha nunca crezcan
+excesivamente), y el pentagrama de los pedales debería comportarse de
+una forma similar.
+
+@cindex sub-propiedades
+@cindex propiedades, sub-propiedades
+@cindex objetos gráficos
+@cindex gráficos, objetos
+@cindex grobs
+
+El grado de ampliabilidad o separabilidad de los pentagramas se puede
+controlar con la propiedad @code{staff-staff-spacing} del @q{objeto
+gráfico} @code{VerticalAxisGroup} (los objetos gráficos reciben por lo
+general el nombre de @q{grob}s en la documentación de lilypond); no se
+preocupe por el momento de los detalles, pues esto se explica más
+tarde de forma exhaustiva. Los más curiosos pueden echar un vistazo a
+@ruser{Panorámica de la modificación de las propiedades}. En este
+caso, queremos modificar solamente la sub-propiedad
+@code{stretchability}.
+De nuevo, los curiosos encontrarán los valores
+predeterminados para la propiedad staff-staff-spacing
+en el archivo @file{scm/define-grobs.scm}
+examinando la definición del grob @code{VerticalAxisGroup} grob. El
+valor de @code{stretchability} se toma de la definición del contexto
+@code{PianoStaff} (en el archivo @file{ly/engraver-init.ly}) de
+forma que los valores sean idénticos.
+
+@example
+\score @{
+ << % el grupo PianoStaff y el pentagrama de Pedal son simultáneos
+ \new PianoStaff <<
+ \new Staff = "ManualUno" <<
+ \keyTime % establecer compás y tonalidad
+ \clef "treble"
+ \new Voice @{
+ \voiceOne
+ \MusicaManualUnoVozUno
+ @}
+ \new Voice @{
+ \voiceTwo
+ \MusicaManualUnoVozDos
+ @}
+ >> % % fin del contexto de Staff ManualUno
+ \new Staff = "ManualDos" \with @{
+ \override VerticalAxisGroup
+ #'staff-staff-spacing #'stretchability = 5
+ @} <<
+ \keyTime
\clef "bass"
- \new Voice @{ \MusicaManualDos @}
+ \new Voice @{
+ \MusicaManualDos
+ @}
>> % fin del contexto de Staff ManualDos
>> % fin del contexto de PianoStaff
\new Staff = "OrganoPedal" <<
- \TimeKey
+ \keyTime
\clef "bass"
- \new Voice @{ \MusicaOrganoPedal @}
+ \new Voice @{
+ \MusicaOrganoPedal
+ @}
>> % fin del pentagrama de OrganoPedal
>>
-@} % end Score context
+@} % fin del contexto Score
@end example
Con esto se completa la estructura. Toda música para órgano de tres
title = "Jesu, meine Freude"
composer = "J S Bach"
}
-TimeKey = { \time 4/4 \key c \minor }
+keyTime = { \key c \minor \time 4/4 }
ManualOneVoiceOneMusic = \relative g' {
- g4 g f ees | d2 c2 |
+ g4 g f ees |
+ d2 c |
}
ManualOneVoiceTwoMusic = \relative c' {
ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
- c c4 b8 c8. g16 c b c d |
+ c8 c4 b8 c8. g16 c b c d |
}
ManualTwoMusic = \relative c' {
c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
- f ees f d g aes g f ees d e8~ ees16 f ees d |
+ f16 ees f d g aes g f ees d e8~ ees16 f ees d |
}
PedalOrganMusic = \relative c {
r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
r16 g ees f g f g8 c,2 |
- }
+}
\score {
<< % PianoStaff and Pedal Staff must be simultaneous
\new PianoStaff <<
\new Staff = "ManualOne" <<
- \TimeKey % set time signature and key
+ \keyTime % set key and time signature
\clef "treble"
- \new Voice { \voiceOne \ManualOneVoiceOneMusic }
- \new Voice { \voiceTwo \ManualOneVoiceTwoMusic }
+ \new Voice {
+ \voiceOne
+ \ManualOneVoiceOneMusic
+ }
+ \new Voice {
+ \voiceTwo
+ \ManualOneVoiceTwoMusic
+ }
>> % end ManualOne Staff context
- \new Staff = "ManualTwo" <<
- \TimeKey
+ \new Staff = "ManualTwo" \with {
+ \override VerticalAxisGroup
+ #'staff-staff-spacing #'stretchability = 5
+ } <<
+ \keyTime
\clef "bass"
- \new Voice { \ManualTwoMusic }
+ \new Voice {
+ \ManualTwoMusic
+ }
>> % end ManualTwo Staff context
>> % end PianoStaff context
\new Staff = "PedalOrgan" <<
- \TimeKey
+ \keyTime
\clef "bass"
- \new Voice { \PedalOrganMusic }
+ \new Voice {
+ \PedalOrganMusic
+ }
>> % end PedalOrgan Staff context
>>
} % end Score context
@end lilypond
+
+@seealso
+Glosario musical:
+@rglos{system}.
+
+@node Ahorrar tecleo mediante variables y funciones
+@subsection Ahorrar tecleo mediante variables y funciones
+@translationof Saving typing with variables and functions
+
+@cindex variables
+@cindex identificadores
+
+Llegado a este punto, usted ha visto cosas de este tipo:
+
+@lilypond[quote,verbatim,ragged-right]
+hornNotes = \relative c'' { c4 b dis c }
+
+\score {
+ {
+ \hornNotes
+ }
+}
+@end lilypond
+
+Incluso se dará cuenta de que esto puede ser útil en música
+minimalista:
+
+@lilypond[quote,verbatim,ragged-right]
+fragmentA = \relative c'' { a4 a8. b16 }
+fragmentB = \relative c'' { a8. gis16 ees4 }
+
+violin = \new Staff {
+ \fragmentA \fragmentA |
+ \fragmentB \fragmentA |
+}
+
+\score {
+ {
+ \violin
+ }
+}
+@end lilypond
+
+Sin embargo también puede usar estos identificadores (que también se
+conocen como variables, macros o instrucciones definidas por el
+usuario) para hacer trucos:
+
+@c TODO Avoid padtext - not needed with skylining
+@lilypond[quote,verbatim,ragged-right]
+dolce = \markup { \italic \bold dolce }
+
+padText = { \once \override TextScript #'padding = #5.0 }
+fthenp =_\markup {
+ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
+}
+
+violin = \relative c'' {
+ \repeat volta 2 {
+ c4._\dolce b8 a8 g a b |
+ \padText
+ c4.^"hi there!" d8 e' f g d |
+ c,4.\fthenp b8 c4 c-. |
+ }
+}
+
+\score {
+ {
+ \violin
+ }
+ \layout { ragged-right = ##t }
+}
+@end lilypond
+
+Obviamente estos identificadores son útiles para ahorrar tecleo. Pero
+son dignos de tener en cuenta incluso si se van a utilizar una sola
+vez: reducen la complejidad. Examinemos el ejemplo anterior reescrito
+sin ningún identificador. Encontrará que es mucho más difícil de
+leer, sobre todo la última línea.
+
+@example
+violin = \relative c'' @{
+ \repeat volta 2 @{
+ c4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
+ \once \override TextScript #'padding = #5.0
+ c4.^"hi there!" d8 e' f g d |
+ c,4.\markup @{
+ \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
+ @}
+ b8 c4 c-. |
+ @}
+@}
+@end example
+
+@c TODO Replace the following with a better example -td
+@c Skylining handles this correctly without padText
+
+Hasta ahora hemos contemplado la sustitución estática: cuando LilyPond
+se encuentra con @code{\padText}, lo sustituye con aquello que
+hemos definido que sea (es decir, todo lo que está a la derecha de
+@code{padtext=}).
+
+LilyPond también puede manejar sustituciones no estáticas (piense en
+ellas como en funciones).
+
+@lilypond[quote,verbatim,ragged-right]
+padText =
+#(define-music-function
+ (parser location padding)
+ (number?)
+ #{
+ \once \override TextScript #'padding = $padding
+ #})
+
+\relative c''' {
+ c4^"piu mosso" b a b |
+ \padText #1.8
+ c4^"piu mosso" d e f |
+ \padText #2.6
+ c4^"piu mosso" fis a g |
+}
+@end lilypond
+
+La utilización de identificadores también es una buena forma de
+reducir el trabajo si la sintaxis de entrada de LilyPond cambia (véase
+@rprogram{Actualizar ficheros con convert-ly}). Si tiene una sola
+definición (como p.ej. @code{\dolce}) para todos sus archivos (ver
+@ref{Hojas de estilo}), y después la sintaxis se modifica, sólo tendrá
+que actualizar su definición @code{\dolce} única, en lugar de tener
+que hacer cambios en cada uno de los archivos @file{.ly}.
+
+
+
+@node Partituras y particellas
+@subsection Partituras y particellas
+@translationof Scores and parts
+
+En música orquestal, todas las notas se imprimen dos veces. Una vez
+en las particellas para los músicos, y otra para la partitura del
+director. Los identificadores se pueden usar para evitar la
+duplicación del trabajo. La música se escribe una vez y se almacena
+en una variable. El contenido de dicha variable se usa después para
+generar tanto la particella como la partitura del director.
+
+Es muy conveniente definir las notas en un archivo especial. Por
+ejemplo, supongamos que el archivo @file{trompa.ly} contiene la
+siguiente parte de un dúo para trompa y fagot:
+
+@example
+notasTrompa = \relative c @{
+ \time 2/4
+ r4 f8 a | cis4 f | e4 d |
+@}
+@end example
+
+@noindent
+Luego se hace una particella escribiendo en un archivo lo siguiente
+
+@example
+\include "trompa.ly"
+
+\header @{
+ instrument = "Trompa en Fa"
+@}
+
+@{
+ \transpose f c' \notasTrompa
+@}
+@end example
+
+La línea
+
+@example
+\include "trompa.ly"
+@end example
+
+@noindent
+sustituye el contenido de @file{trompa.ly} en esta posición dentro del
+archivo, así que @code{notasTrompa} se define con posterioridad. La
+instrucción @code{\transpose f@tie{}c'} indica que el argumento
+constituido por @code{\notasTrompa} se debe transponer una quinta
+hacia arriba. Lo que suena como @code{f} se escribe como @code{c'},
+lo que corresponde con el tono de afinación de una trompa normal
+en@tie{}Fa. La transposición se puede ver en la siguiente salida
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+ \time 2/4
+ r4 f8 a | cis4 f | e4 d |
+}
+@end lilypond
+
+En piezas para conjunto, con frecuencia una de las voces no suena
+durante muchos compases. Esto queda denotado por un silencio
+especial, el silencio multicompás. Se introduce con una @code{R}
+mayúscula seguida de una duración (@code{1}@tie{}en el caso de la
+redonda, @code{2}@tie{}en el caso de una blanca, etc.). Multiplicando
+la duración se pueden construir silencios más largos. Por ejemplo,
+este silencio ocupa 3@tie{}compases de 2/4
+
+@example
+R2*3
+@end example
+
+Cuando se imprime la particella tienen que comprimirse los silencios
+multicompás. Esto se hace estableciendo una variable en tiempo de
+ejecución
+
+@example
+\set Score.skipBars = ##t
+@end example
+
+@noindent
+Esta instrucción establece el valor de la propiedad @code{skipBars} en
+el contexto de @code{Score} a verdadero (@code{##t}). Anteponiendo el
+silencio y esta opción a la música anterior, llegamos al siguiente
+resultado
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+ \time 2/4
+ \set Score.skipBars = ##t
+ R2*3 |
+ r4 f8 a | cis4 f | e4 d |
+}
+@end lilypond
+
+
+Esta partitura se hace combinando toda la música junta. Suponiendo
+que la otra voz se encuentra dentro de @code{notasFagot} en el archivo
+@file{fagot.ly}, la partitura se hace con
+
+@example
+\include "fagot.ly"
+\include "trompa.ly"
+
+<<
+ \new Staff \notasTrompa
+ \new Staff \notasFagot
+>>
+@end example
+
+@noindent
+lo que nos lleva a
+
+@lilypond[quote,ragged-right]
+\relative c <<
+ \new Staff {
+ \clef "treble"
+ \time 2/4
+ R2*3 |
+ r4 f8 a | cis4 f | e4 d |
+ }
+ \new Staff {
+ \clef "bass"
+ \time 2/4
+ r4 d,8 f | gis4 c | b4 bes |
+ a8 e f4 | g4 d | gis4 f |
+ }
+>>
+@end lilypond
+
+
+