@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @c This file is part of lilypond-learning.tely @ignore Translation of GIT committish: bea70d053e3e279c3fbb18cbce52d995ce04fec7 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore @node Fundamental concepts @chapter 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 conceptos y técnicas que se requieren para producir partituras igualmente bellas pero más complejas. @menu * How LilyPond files work:: * Voices contain music:: * Contexts and engravers:: * Extending the templates:: @end menu @node How LilyPond files work @section How LilyPond files work El formato de entrada de LilyPond es bastante libre en su forma y concede a los usuarios con experiencia mucha flexibilidad para estructurar sus archivos de la forma que deseen. Sin embargo, toda esta flexibilidad puede hacer que las cosas se vuelvan confusas 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}. @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:: @end menu @node Introduction to the LilyPond file structure @subsection Introduction to the LilyPond file structure Un ejemplo básico de archivo de entrada de lilypond es el siguiente: @example \version @w{"@version{}"} \score @{ @var{...expresión musical compuesta...} % toda la música viene aquí \header @{ @} \layout @{ @} \midi @{ @} @} @end example @noindent Existen muchas variaciones de este esquema básico, pero el ejemplo constituye un útil punto de partida. Hasta el momento, ninguno de los ejemplos que ha podido ver utiliza la instrucción @code{\score@{@}}. Esto es así a causa de que LilyPond añade automáticamente las órdenes adicionales que se requieren cuando le proporcionamos una entrada sencilla. LilyPond trata una entrada como ésta: @example \relative c'' @{ c4 a d c @} @end example @noindent como una abreviatura de esta otra: @example \book @{ \score @{ \new Staff @{ \new Voice @{ \relative c'' @{ c4 a b c @} @} @} \layout @{ @} @} @} @end example En tras palabras, si la entrada consta de una única expresión musical, LilyPond interpreta el archivo como si la expresción musical estuviera rodeada por un envoltorio hecho por las instrucciones que acabamos de ver. De todas formas, vamos a volver al primer ejemplo para examinar la instrucción @code{\score}, dejando las demás en su forma predeterminada. Un bloque @code{\score} siempre debe contener una expresión musical única, que debe aparecer inmediatamente después de la instrucción @code{\score}. Recuerde que una expresión musical podía ser cualquier cosa entre una sola nota hasta una enorme expresión compuesta como @example @{ \new GrandStaff << @var{...inserte aquí la partitura completa de una ópera de Wagner...} >> @} @end example @noindent Puesto que todo se encuentra dentro de @code{@{ ... @}}, cuenta como una expresión musical. Como vimos anteriormente, el bloque @code{\score} puede contener otras cosas, tales como @example \score @{ @{ c'4 a b c' @} \header @{ @} \layout @{ @} \midi @{ @} @} @end example @noindent Hay personas que ponen algunos de estos comandos fuera del bloque @code{\score} (por ejemplo, @code{\header} se sitúa con frecuencia por encima del @code{\score}. Es tan sólo otra abreviatura que LilyPond acepta. Dos instrucciones más que no hemos visto aún son @code{\layout @{ @}} 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}. Podemos escribir varios bloques @code{\score}. Cada uno de ellos recibirá el mismo tratamiento que una partitura independiente, pero se 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 archivo @code{.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. Para ver más detalles, consulte @ruser{Multiple scores in a book}. @cindex variables Otro atajo genial es la posibilidad de definir variables. Todas las plantillas emplean lo siguiente: @example melodia = \relative c' @{ c4 a b c @} \score @{ \melodia @} @end 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}, @code{manoderechadelpiano} o @code{fulanomengano}). Para ver más detalles, consulte @ref{Saving typing with variables and functions}. 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}. @seealso Para ver una definición completa del formato del código de entrada, consulte @ruser{File structure}. @node Score is a (single) compound musical expression @subsection Score is a (single) compound musical expression @cindex expresión musical compuesta @cindex música, expresión compuesta de En la sección anterior, @ruser{How LilyPond files work} 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: @quotation @emph{Una @code{\score} debe comenzar con una única expresión musical.} @end quotation @noindent Quizá encuentre útil dar un repaso a @ruser{Music expressions explained}. 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 la expresión musical completa \new GrandStaff << @var{...introduzca aquí la partitura completa de una ópera de Wagner...} >> @} % esta llave da por terminada la 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. No necesitamos un @code{GrandStaff} para este conjunto, así que lo retiramos. Sin embargo, sí que @emph{necesitamos} un cantante y un piano. @example \score @{ << \new Staff = "cantante" << >> \new PianoStaff = piano << >> >> \layout @{ @} @} @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! Sin embargo, la construcción @code{<< ... >>} no es realmente necesaria para el pentagrama del cantante (pues contiene una sola expresión musical), pero los pentagramas (Staff) a menudo necesitan varias voces (Voice) en su interior, así es bueno adoptar el hábito de usar @code{<< ... >>} en lugar de llaves. Escribiremos algo de música real más tarde; por ahora limitémonos a poner algunas notas y letra de relleno. @lilypond[verbatim,quote,ragged-right] \score { << \new Staff = "singer" << \new Voice = "vocal" { c'1 } \addlyrics { And } >> \new PianoStaff = "piano" << \new Staff = "upper" { c'1 } \new Staff = "lower" { c'1 } >> >> \layout { } } @end lilypond Ahora tenemos muchos más detalles. Tenemos la pauta del cantante: contiene una @code{Voice} o voz (en LilyPond, este término hace 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). En este momento podríamos comenzar a meter las notas. Dentro de las llaves que siguen a @code{\new Voice = vocal}, podríamos empezar escribiendo @example \relative c'' @{ r4 d8\noBeam g, c4 r @} @end example 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: @lilypond[verbatim,quote,ragged-right] melody = \relative c'' { r4 d8\noBeam g, c4 r } text = \lyricmode { And God said, } upper = \relative c'' { 2~ } lower = \relative c { b2 e2 } \score { << \new Staff = "singer" << \new Voice = "vocal" { \melody } \addlyrics { \text } >> \new PianoStaff = "piano" << \new Staff = "upper" { \upper } \new Staff = "lower" { \clef "bass" \lower } >> >> \layout { } } @end lilypond Tenga cuidado con la diferencia entre las notas, que se introducen con @code{\relative}, y la letra, que se introduce con @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 la capa exterior y luego trabaje sobre cada una de las capas interiores. También ayuda ser estricto con los márgenes (asegúrese de que en su editor de texto cada elemento de la misma capa comienza en la misma posición horizontal). @node Nesting music expressions @subsection Nesting music expressions No es esencial declarar todos los pentagramas al comienzo; se pueden crear temporalmente en cualquier momento. Esto es de especial utilidad para crear secciones de ossia (véase @rglos{ossia}). A continuación presentamos un ejemplo sencillo que muestra cómo introducir temporalmente un pentagrama nuevo mientras dura un fragmento de tras notas: @lilypond[verbatim,quote,ragged-right] \new Staff { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff { f8 f c } >> r4 | } } @end lilypond @noindent Advierta que el tamaño de la clave es igual al que se imprime en un cambio de clave (ligemamente menor que la clave al principio de una línea). Esto es normal para cualquier clave que se imprime en la mitad de una línea. La sección ossia se puede colocar encima del pentagrama de la manera siguiente: @lilypond[verbatim,quote,ragged-right] \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 | } } @end lilypond Este ejemplo utiliza @code{\with}, que se explica en todo detalle más adelante. Es un medio de modificar el comportamiento predeterminado de un solo pentagrama. Aquí, dice que el pentagrama nuevo se debe colocar por encima del pentagrama llamado @qq{main} en vez de la posición predeterminada que seería por debajo. 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} @node On the un-nestedness of brackets and ties @subsection On the un-nestedness of brackets and ties En la escritura del archivo de entrada de LilyPond, hemos podido ver algunos tipos de paréntesis, llaves o ángulos de distintos tipos. Éstos obedecen a distintas reglas que al principio pueden resultar confusas. Antes de explicar estas reglas, demos un repaso a las distintas clases de corchetes, llaves y paréntesis. @c attempt to force this onto a new page @need 50 @multitable @columnfractions .3 .7 @headitem Tipo de paréntesis @tab Función @item @code{@{ .. @}} @tab Encierra un fragmento secuencial de música @item @code{< .. >} @tab Encierra las notas de un acorde @item @code{<< .. >>} @tab Encierra secciones concurrentes o simultáneas @item @code{( .. )} @tab Marca el comienzo y el final de una ligadura de expresión @item @code{\( .. \)} @tab Marca el comienzo y el final de una ligadura de fraseo @item @code{[ .. ]} @tab Marca el comienzo y el final de un barrado manual @end multitable A las anteriores, debemos añadir otras construcciones que generan líneas entre o a través de las notas: las ligaduras de unión (marcadas con una tilde curva, @code{~}), los grupos especiales que se escriben como @code{\times x/y @{..@}}, y las notas de adorno, que se escriben como @code{\grace@{..@}}. Fuera de LilyPond, el uso convencional de los paréntesis y otros corchetes requiere que los distintos tipos se encuentren anidados correctamente, como en: @code{<< [ @{ ( .. ) @} ] >>}, de manera que los paréntesis que se cierran deben encontrarse en el orden exactamente opuesto al de los paréntesis que se abren. Esto @strong{es} un requisito para los tres tipos de paréntesis que se describen mediante la parabla @q{Encierra} en la tabla anterior: se deben anidar correctamente. Sin embargo, el resto de las llaves y corchetes, que se encuentran descritos por la palabra @q{Marca} en la misma tabla anterior, @strong{no} tienen por qué anidarse estrictamente con ninguno de los otros paréntesis. De hecho, éstos no son paréntesis en el sentido de que encierran algo: simplemente son marcadores que indican dónde empieza o finaliza algo. Asíi pues, por ejemplo, una ligadura de fraseo puede dar comienzo 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] } @end lilypond En general, los distintos tipos de corchete, y los implicados en grupos especiiales, ligaduras de unión y notas de adorno, se pueden mezclar con total libertad. Este ejemplo muestra una barra que se extiende hacia el interior de un grupo de valoración especial (línea 1), una ligadura de expresión que se prolonga hasta el interior de un grupo especial (línea 2), una barra y una ligadura de expresión que se prolongan hasta el interior de un grupo especial, una ligadura de 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.\) } @end lilypond @node Voices contain music @section Voices contain music UNTRANSLATED NODE: IGNORE ME @menu * I'm hearing Voices:: * Explicitly instantiating voices:: * Voices and vocals:: @end menu @node I'm hearing Voices @subsection I'm hearing Voices UNTRANSLATED NODE: IGNORE ME @node Explicitly instantiating voices @subsection Explicitly instantiating voices UNTRANSLATED NODE: IGNORE ME @node Voices and vocals @subsection Voices and vocals UNTRANSLATED NODE: IGNORE ME @node Contexts and engravers @section Contexts and engravers UNTRANSLATED NODE: IGNORE ME @menu * Contexts explained:: * Creating contexts:: * Engravers explained:: * Modifying context properties:: * Adding and removing engravers:: @end menu @node Contexts explained @subsection Contexts explained Cuando se imprime la música, se tienen que añadir a la salida una gran cantidad de elementos notacionales. Por ejemplo, compare la entrada y la salida del siguiente ejemplo: @lilypond[quote,verbatim,relative=2,fragment] cis4 cis2. g4 @end lilypond La entrada es bastante escueta, pero en la salida se añaden líneas divisorias, alteraciones accidentales, la clave y la indicación de compás. LilyPond @emph{interpreta} la entrada. En esta fase se inspecciona la información musical en orden temporal, de forma parecida a la lectura de una partitura de izquierda a derecha. Mientras se lee la entrada, el programa recuerda dónde se encuentran los límites de los compases, y qué notas requieren alteraciones explícitas. Esta información se puede presentar sobre varios niveles. Por ejemplo, el efecto de una alteración accidental se encuentra limitada a un solo pentagrama, mientras que una barra divisoria debe estar sincronizada a través de la partitura de arriba a abajo. Dentro de LilyPond, estas reglas y pequeñas porciones de información se agrupan en @emph{Contexts}. Algunos ejemplos de contextos son @code{Voice} (Voz), @code{Staff} (Pauta o pentagrama) y @code{Score} (Partitura). Los contextos son jerárquicos, por ejemplo: un @code{Staff} contener muchas @code{Voice}s, y una @code{Score} puede contener muchos contextos de @code{Staff}. @quotation @sourceimage{context-example,5cm,,} @end quotation Cada contexto asume la responsabilidad de imponer algunas reglas de notación, creando ciertos objetos de notación y manteniendo las propiedades asociadas. Por ejemplo, el contexto @code{Voice} puede introducir una alteración accidental y entonces el contexto @code{Staff} mantiene la regla de mostrar o suprimir la alteración para el resto del compás. La sincronización de las líneas divisorias se gestiona dentro del contexto de la partitura, @code{Score}. Sin embargo, en algunas músicas posiblemente no queramos que las líneas divisorias estén sincronizada (pensemos en una partitura polimétrica en compases de 4/4 y de 3/4). En tales casos, debemos modificar los ajustes por omisión de los contextos @code{Score} y @code{Staff}. Para partituras muy sencillas, los contextos se crean implícitamente y no debemos preocuparnos por ellos. Para piezas mayores, como por ejemplo cualquiera que tenga más de un pentagrama, los contextos se deben crear explícitamente para asegurarnos de que tendremos la cantidad exacta de pentagramas que necesitamos, y que están en el orden correcto. Para tipografiar piezas con notación especializada, puede ser útil modificar contextos existentes o definir unos nuevos. En la referencia del programa se encuentra una descripción completa de todos los contextos que están disponibles, consulte @ifhtml @internalsref{Contexts}. @end ifhtml @ifnothtml Traducción @expansion{} Contexto. @end ifnothtml @c [TODO: describe propagation] @node Creating contexts @subsection Creating contexts 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. Para partituras que solamente tienen una voz y un pentagrama, podemos 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 @funindex \new @cindex contextos nuevos @cindex nuevo, contexto @example \new @var{tipo} @var{expresión_musical} @end example @noindent donde @var{tipo} es el nombre de un contexto (como @code{Staff} o @code{Voice}). Esta instrucción crea un contexto nuevo, y comienza a 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}. La instrucción @code{\new} también puede otorgar un nombre identificativo al contexto para distinguirlo de otros contextos del mismo tipo: @example \new @var{tipo} = @var{identificador} @var{expresión_musical} @end example Observe la distinción entre el nombre del tipo de contexto, @code{Staff}, @code{Voice}, etc., y el nombre identificativo de una instancia en particular de ese tipo, que puede ser cualquier secuencia de letras inventada por el usuario. 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}. @node Engravers explained @subsection Engravers explained @cindex grabadores Todas y cada una de las marcas de la salida impresa de una partitura hecha con LiilyPond está producida por un @code{Engraver} (grabador). Así, tenemos un grabador para imprimir pentagramas, otro para imprimir las cabezas de las notas, otro para las plicas, otro para las barras, etc, etc. ¡En total hay más de 120 grabadores! Afortunadamente, para la mayor parte de las partituras no es necesario conocer más que algunos, y para partituras sencillas no tenemos que saber nada de ninguno de ellos. Los grabadores residen y operan dentro de Contextos. Los grabadores como el grabador de la indicación metronómica, @code{Metronome_mark_engraver}, cuya acción y resultado se aplica a la partitura como un todo, operan en el contexto del nivel más alto: el contexto de partitura @code{Score}. El grabador de la clave @code{Clef_engraver} y el de la armadura @code{Key_engraver} se encuentran probablemente en todos los contextos de pentagrama (Staff), pues los distintos pentagramas podrían requerir diferentes claves y armaduras. El grabador de las cabezas de nota @code{Note_heads_engraver} y el de las plicas @code{Stem_engraver} viven en cada uno de los contextos de voz @code{Voice}, el contexto de nivel más bajo de todos. Cada grabador procesa los objetos particulares asociados con su función, y mantiene las propiedades que están relacionadas con dicha función. Estas propiedades, como las que están asociadas con los contextos, se pueden modificar para cambiar el funcionamiento del grabador o el aspecto de esos elementos en la partitura impresa. Todos los grabadores tienen nombres compuestos de varias palabras que describen su función. Sólo está en mayúsculas la inicial de la primera palabra, y el resto se le une mediante guiones bajos. Así, el grabador @code{Staff_symbol_engraver} es responsable de la creación de las líneas del pentagrama, y el @code{Clef_engraver} determina y establece la altura o el punto de referencia sobre el pentagrama dibujando un símbolo de clave. A continuación presentamos algunos de los grabadores más comunes, junto a su función. Podrá comprobar que es fácil adivinar la función a partir del nombre (en inglés), y viceversa. @multitable @columnfractions .3 .7 @headitem Grabador @tab Función @item Accidental_engraver @tab Hace las alteraciones accidentales, de precaución y de sugerencia. @item Beam_engraver @tab Graba las barras @item Clef_engraver @tab Graba las claves @item Dynamic_engraver @tab Crea reguladores e indicaciones dinámicas textuales @item Key_engraver @tab Crea la armadura de la tonalidad @item Metronome_mark_engraver @tab Graba la indicación metronómica @item Note_heads_engraver @tab Graba la cabeza de las notas @item Rest_engraver @tab Graba los silencios @item Staff_symbol_engraver @tab Graba las cinco líneas (de forma predeterminada) del pentagrama @item Stem_engraver @tab Crea las plicas y los trémolos de una sola plica @item Time_signature_engraver @tab Crea las indicaciones de compás @end multitable @smallspace Más adelante veremos cómo la salida de LilyPond se puede cambiar mediante la modificación del funcionamiento de los Grabadores. @node Modifying context properties @subsection Modifying context properties @cindex properties @funindex \set @cindex changing properties Cada contexto puede tener diferentes @emph{propiedades} o variables contenidas en dicho contexto. Se pueden cambiar mientras se desarrolla la fase de interpretación. Esto se consigue insertando la instrucción @code{\set} en la música, @example \set @var{contexto}.@var{propiedad} = #@var{valor} @end example Por ejemplo, @lilypond[quote,verbatim,relative=2,fragment] R1*2 \set Score.skipBars = ##t R1*2 @end lilypond Esta instrucción hace que se salten los compases que no tienen ninguna nota. El resultado es que los silencios multicompás se comprimen. El valor asignado es un objeto del lenguaje Scheme. En este caso, es @code{#t}, el valor booleano Verdadero. Si el argumento @var{contexto} se deja en blanco, entonces se utiliza el contexto actual más bajo (normalmente @code{ChordNames}, @code{Voice} o @code{Lyrics}). En este ejemplo, @lilypond[quote,verbatim,relative=2,fragment] c8 c c c \set autoBeaming = ##f c8 c c c @end lilypond @noindent el argumento @var{contexto} para la instrucción @code{\set} está omitido, por tanto el barrado automático está desactivado en la @internalsref{Voice} (voz) actual. Fíjese en que el contexto más bajo no siempre contiene la propiedad que quiere cambiar. Por ejemplo, si intenta establecer la propiedad @code{skipBars} (del contexto más bajo, en este caso @code{Voice}) no se producirá ningún efecto. @lilypond[quote,verbatim,relative=2,fragment] R1*2 \set skipBars = ##t R1*2 @end lilypond Los contextos son jerárquicos, de forma que si se especificó un contexto mayor, por ejemplo @code{Staff}, entonces el cambio también se aplicaría a todos los @code{Voice}s o contextos de voz en el pentagrama actual. El cambio se aplica @q{al vuelo}, mientras transcurre la música, de manera que el ajuste sólo afecta al segundo grupo de corcheas. @funindex \unset También existe una instrucción @code{\unset}, @example \unset @var{contexto}.@var{propiedad} @end example @noindent que quita la definición de la @var{propiedad}. Esta instrucción quita la definición solamente si está establecida dentro del @var{contexto} especificado, por lo que @example \set Staff.autoBeaming = ##f @end example @noindent introduce un ajuste de propiedad en el nivel del contexto @code{Staff}. El ajuste también se aplica a la @code{Voice} actual. Sin embargo, @example \unset Voice.autoBeaming @end example @noindent no tiene ningún efecto. Para cancelar este ajuste, el @code{\unset} se debe especificar en el mismo nivel que el @code{\set} original. En otras palabras, deshacer el efecto de @code{Staff.autoBeaming = ##f} requiere @example \unset Staff.autoBeaming @end example Igual que @code{\set}, el argumento @var{contexto} no tiene que especificarse para un contexto que está en la parte más baja, por lo que las dos instrucciones @example \set Voice.autoBeaming = ##t \set autoBeaming = ##t @end example @noindent son equivalentes. @cindex \once Los ajustes que se quieren aplicar a un paso de tiempo único se pueden escribir con @code{\once}, por ejemplo en @lilypond[quote,verbatim,relative=2,fragment] c4 \once \set fontSize = #4.7 c4 c4 @end lilypond la propiedad @code{fontSize} pierde su valor automáticamente después de la segunda nota. En la referencia del programa hay una descripción detallada de todas las propiedades de contexto disponibles, véase @ifhtml @internalsref{Tunable context properties}. @end ifhtml @ifnothtml Traducción @expansion{} propiedades de contexto ajustables. @end ifnothtml @node Adding and removing engravers @subsection Adding and removing engravers UNTRANSLATED NODE: IGNORE ME @subsubsection Changing a single context @ @subsubsection Changing all contexts of the same type @node Extending the templates @section 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? Para empezar, tome la plantilla que le parezca más parecida a aquello que quiere conseguir. Digamos que quiere escribir algo para soprano y cello. En este caso comenzaríamos con la plantilla @q{Notas y letra} (para la parte de soprano). @example \version "2.11.38" melodia = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} texto = \lyricmode @{ Aaa Bee Cee Dee @} \score@{ << \new Voice = "uno" @{ \autoBeamOff \melodia @} \new Lyrics \lyricsto "uno" \text >> \layout @{ @} \midi @{ @} @} @end example Ahora queremos añadir una parte de violoncello. Veamos el ejemplo @q{Sólo notas}: @example \version "2.11.38" melodia = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} \score @{ \new Staff \melody \layout @{ @} \midi @{ @} @} @end example No necesitamos dos comandos @code{\version}. Vamos a necesitar la sección @code{melodia}. No queremos dos secciones @code{\score} (si tuviésemos dos @code{\score}s, acabaríamos con las dos particellas por separado. Queremos las dos juntas, como un dúo. Dentro de la sección @code{\score}, no nos hacen falta dos @code{\layout} ni dos @code{\midi}. Si nos limitásemos a copiar y pegar la sección @code{melodia}, acabaríamos con dos secciones @code{melodia} separadas, así que vamos a cambiarles el nombre. Llamaremos @code{musicaSoprano} a la sección de la soprano y @code{musicaCello} a la sección del violoncello. Al mismo tiempo cambiaremos el nombre de @code{texto} a @code{letraSoprano}. Recuerde cambiar el nombre a las dos apariciones de todos estos nombres -- tanto la definición inicial (la parte @code{melodia = relative c' @{ }) -- como el uso de ese nombre (en la sección @code{\score}). También aprovecharemos para cambiar el pentagrama de la parte del cello (los violoncellos se escriben normalmente en clave de Fa). Asimismo, cambiaremos algunas notas del cello. @example \version "2.11.38" musicaSoprano = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} letraSoprano = \lyricmode @{ Aaa Bee Cee Dee @} musicaCello = \relative c @{ \clef bass \key c \major \time 4/4 d4 g fis8 e d4 @} \score@{ << \new Voice = "uno" @{ \autoBeamOff \sopranoMusic @} \new Lyrics \lyricsto "uno" \letraSoprano >> \layout @{ @} \midi @{ @} @} @end example Esto tiene una pinta prometedora, pero la parte del cello no sale en la partitura (no la hemos puesto en la sección @code{\score}). Si queremos que la parte del cello aparezca debajo de la de soprano, tenemos que añadir @example \new Staff \musicaCello @end example @noindent justo debajo de todo lo de la soprano. También tenemos que poner @code{<<} y @code{>>} antes y después de la música -- lo que indica a LilyPond que hay más de una cosa (en este caso, @code{Staff}) sucediendo al mismo tiempo -- . La @code{\score} se parecerá ahora a esto @example \score@{ << << \new Voice = "uno" @{ \autoBeamOff \sopranoMusic @} \new Lyrics \lyricsto "uno" \letraSoprano >> \new Staff \musicaCello >> \layout @{ @} \midi @{ @} @} @end example @noindent Esto parece un poco enrevesado; los márgenes están descuadrados. Esto tiene fácil solución. Presentamos aquí la plantilla completa para soprano y cello. @lilypond[quote,verbatim,ragged-right] \version "2.11.38" sopranoMusic = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative c { \clef bass \key c \major \time 4/4 d4 g fis8 e d4 } \score{ << << \new Voice = "one" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "one" \sopranoLyrics >> \new Staff \celloMusic >> \layout { } \midi { } } @end lilypond @menu * Soprano and cello:: * Four-part SATB vocal score:: * Building a score from scratch:: @end menu @node Soprano and cello @subsection Soprano and cello UNTRANSLATED NODE: IGNORE ME @node Four-part SATB vocal score @subsection Four-part SATB vocal score UNTRANSLATED NODE: IGNORE ME @node Building a score from scratch @subsection Building a score from scratch UNTRANSLATED NODE: IGNORE ME -- SKELETON FILE -- When you actually translate this file, please remove these lines as well as all `UNTRANSLATED NODE: IGNORE ME' lines.