| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Tweaking basics
| 4.1.1 Introducción al trucaje | ||
| 4.1.2 Objetos e interfaces | ||
| 4.1.3 Convenciones de nombres de objetos y propiedades | ||
| 4.1.4 Métodos de trucaje |
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Introduction to tweaks
El ‘Trucaje’ es un término de LilyPond que denota los diversos métodos que el usuario tiene a su disposición para modificar el proceso de interpretación del archivo de entrada y cambiar la apariencia de la salida impresa. Algunos trucos son muy fáciles de usar; otros son más complejos. Pero en su conjunto, los métodos de trucaje disponibles posibilitan conseguir casi cualquier apariencia que deseemos en la música impresa.
En esta sección vamos a estudiar los conceptos básicos que se necesitan para comprender el trucaje. Más tarde daremos un amplio abanico de instrucciones listas para usar, que podrá simplemente copiar para obtener el mismo efecto en sus partituras, y al mismo tiempo mostraremos la forma de construir dichas instrucciones para que pueda aprender cómo desarrollar sus propios trucos.
Antes de comenzar con este capítulo, quizá quiera echar un vistazo a la sección Contextos y grabadores, pues los Contextos, los Grabadores y las Propiedades que se contienen en ellos son fundamentales para comprender y construir los trucos.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Objects and interfaces
El trucaje consiste en modificar el funcionamiento y estructura interna del programa LilyPond, por lo que en primer lugar introduciremos algunos términos que se usan para describir dichas operaciones y estructuras internas.
El término ‘Objeto’ es un término genérico que se usa para
referirse a la multitud de estructuras internas que LilyPond
construye durante el procesado de un archivo de entrada. Así,
cuando se encuentra una instrucción como \new Staff, se
construye un objeto nuevo del tipo Staff. Entonces, este
objeto Staff contiene todas las propiedades asociadas con
ese pentagrama en particular, por ejemplo, su nombre y su
armadura, además de otros detalles de los grabadores que se han
asignado para que operen dentro del contexto del pentagrama. De
forma similar, hay objetos que guardan las propiedades de todos
los demás contextos, como objetos de Voice, objetos de
Score, objetos de Lyrics, así como objetos que
representan todos los elementos notacionales como líneas
divisorias, cabezas de las notas, ligaduras, indicaciones
dinámicas, etc. Cada objeto tiene su propio conjunto de valores
de propiedad.
Ciertos tipos de objetos reciben nombres especiales. Los objetos que representan elementos de notación sobre la salida impresa como cabezas de notas, plicas, ligaduras de expresión y de unión, digitaciones, claves, etc. reciben el nombre de ‘Objetos de presentación’, a menudo conocidos como ‘Objetos gráficos’, o abreviadamente ‘Grobs’. Aún son objetos en el sentido genérico que hemos mencionado, y también todos ellos tienen propiedades asociadas, como su posición, tamaño, color,etc.
Ciertos objetos de presentación son aún más especializados. Las ligaduras de fraseo, los reguladores, las indicaciones de octava alta y baja, y muchos otros objetos gráficos no están situados en un solo lugar: tienen un punto de inicio, un punto de final, y quizá otras propiedades relacionadas con su forma. Los objetos con una forma extendida como estos, reciben el nombre de «Objetos de extensión» o ‘Spanners’.
Los «spanners» no se pueden trucar después de haberse creado.
Ello incluye tanto a StaffSymbol como a
LedgerLineSpanner, que continúan a lo largo de toda la
partitura (excepto si se les da fin con la instrucción
\stopStaff y se vuelven a crear con la instrucción
\startStaff.
Es más, existen objetos gráficos ‘abstractos’ que no impriman
nada por sí mismos, sino que más bien recopilan, posicionan y
gestionan a otros objetos gráficos. Los ejemplos usuales son
DynamicLineSpanner, BreakAlignment,
NoteColumn, VerticalAxisGroup,
NonMusicalPaperColumn y similares. Más tarde veremos cómo
se usan algunos de ellos.
Aún falta por explicar qué son los ‘Interfaces’. Muchos
objetos, incluso aunque son bastante diferentes, comparten
funcionalidades que se deben procesar de la misma manera. Por
ejemplo, todos los objetos gráficos tienen un color, un tamaño,
una posición, etc., y todas estas propiedades se procesan de la
misma forma durante la interpretación del archivo de entrada por
parte de LilyPond. Para simplificar estas operaciones internas,
estas acciones y propiedades comunes se agrupan en un objeto
llamado grob-interface, interface de grob. Hay muchas
otras agrupaciones de propiedades comunes como ésta, y cada una
recibe un nombre que acaba en interface. En total hay más
de 100 interfaces de éstos. Veremos más adelante porqué esto es
del interés y de utilidad para el usuario.
Estos son, en fin, los términos principales relativos a los objetos que vamos a utilizar en este capítulo.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Naming conventions of objects and properties
Ya hemos visto ciertas convenciones de nomenclatura de objetos, en la sección Contextos y grabadores. En este lugar, para más fácil referencia, presentamos una lista de los tipos de objetos y propiedades más comunes, junto con las convenciones según las cuales reciben su nombre, y un par de ejemplos de nombres reales. Hemos utilizado una ‘A’ mayúscula para denotar cualquier carácter alfabético en mayúsculas, y ‘aaa’ para cualquier número de caracteres alfabéticos en minúscula. Otros caracteres se utilizan literalmente como están.
| Objeto o tipo de propiedad | Convención de nomenclatura | Ejemplos |
|---|---|---|
| Contextos | Aaaa o AaaaAaaaAaaa | Staff, GrandStaff |
| Objetos de presentación | Aaaa o AaaaAaaaAaaa | Slur, NoteHead |
| Grabadores | Aaaa_aaa_engraver | Clef_engraver, Note_heads_engraver |
| Interfaces | aaa-aaa-interface | grob-interface, break-aligned-interface |
| Propiedades de contextos | aaa o aaaAaaaAaaa | alignAboveContext, skipBars |
| Propiedades de objetos de presentación | aaa o aaa-aaa-aaa | direction, beam-thickness |
Como podremos ver en breve, las propiedades de distintos tipos de objeto se modifican por parte de diferentes instrucciones; así pues, es útil poder reconocer los tipos de objetos y propiedades a partir de sus nombres.
Referencia de la notación: (notation)Modificar las propiedades sección ‘Modificar las propiedades’ en Referencia de la Notación.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Tweaking methods
La instrucción \override
La instrucción \override | ||
La instrucción \revert | ||
El prefijo \once | ||
La instrucción \overrideProperty | ||
La instrucción \tweak | ||
El prefijo \single |
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\override@translationof The override command
Ya hemos visto las instrucciones \set y \with, que
se usan para cambiar las propiedades de los contextos y
para quitar y poner grabadores, en
Modificar las propiedades de los contextos y
Añadir y eliminar grabadores. Ahora debemos examinar
algunas otras instrucciones importantes.
La instrucción que cambia las propiedades de los objetos
de presentación es \override. Puesto que esta instrucción
debe modificar propiedades internas que se encuentran en un lugar
profundo dentro de LilyPond, su sintaxis no es tan simple como la
del resto de las instrucciones que hemos usado hasta ahora. Tiene
que saber exactamente qué propiedad de qué objeto y en qué
contexto se debe modificar, y cuál debe ser su nuevo valor.
Veamos cómo se hace.
La sintaxis genérica de esta instrucción es:
\override Contexto.ObjetoDePresentación.propiedad-de-presentación = #valor |
Esto establecerá la propiedad de nombre propiedad-de-presentación del objeto de presentación con el nombre ObjetoDePresentación, que es miembro del contexto Contexto, al valor valor.
El contexto se puede omitir (y normalmente así es) cuando el
contexto requerido se encuentra implicado sin ambigüedad y es uno
de los contextos del nivel más bajo, es decir: Voice,
ChordNames o Lyrics, y lo omitiremos en muchos de
los ejemplos siguientes. Veremos más tarde cuándo se debe
especificar.
Las últimas secciones tratan de forma exhaustiva las propiedades y sus valores, véase Tipos de propiedades. Pero en esta sección usaremos sólo unas cuantas propiedades y valores sencillos que sean fáciles de entender, para ilustrar el formato y la utilización de estas instrucciones.
Las expresiones principales de LilyPond son elementos musicales como notas y duraciones, así como cadenas y elementos de marcado. Las expresiones más específicas como números, símbolos y listas se procesan en el ‘modo de Scheme’, que se invoca por medio del prefijo ‘#’ escrito antes del valor. Para ver más información acerca del modo de Scheme, consulte (extending)Sintaxis del Scheme de LilyPond sección ‘Sintaxis del Scheme de LilyPond’ en Extender.
\override es la instrucción de uso más común dentro del
trucaje, y durante la mayor parte del resto de este capítulo
presentaremos ejemplos de cómo se usa. A continuación hay un
ejemplo sencillo para cambiar el color de una cabeza:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a b c | }
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\revert@translationof The revert command
Una vez sobreescrita, la propiedad retiene su nuevo valor hasta
que se sobreescribe de nuevo o se encuentra una instrucción
\revert. La instrucción \revert tiene la siguiente
sintaxis y ocasiona que el valor de la propiedad se devuelva a su
valor predeterminado original; observe que no es a su valor previo
si se han utilizado varias instrucciones \override.
\revert Contexto.ObjetoDePresentación.propiedad-de-presentación |
Una vez más, igual que Contexto dentro de la instrucción
\override, con frecuencia no es necesario especificar el
Contexto. Se omitirá en muchos de los ejemplos siguientes.
Aquí devolvemos el color de la cabeza al valor predeterminado para
las dos últimas notas:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a \revert NoteHead.color b4 c | }
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\once@translationof The once prefix
\override, \revert, \set y \unset se
pueden hacer preceder por \once. Esto hace que la
instrucción sea efectiva solamente durante el tiempo musical en
curso y antes de que la propiedad vuelva a tener otra vez su valor
anterior (que puede ser distinto de su valor predeterminado si aún
se está aplicando otra instrucción \override de
sobreescritura). Utilizando el mismo ejemplo, podemos cambiar el
color de una sola nota de la siguiente manera:
\relative { c'4 d \override NoteHead.color = #red e4 f | \once \override NoteHead.color = #green g4 a \once \revert NoteHead.color b c | \revert NoteHead.color f2 c | }
El prefijo \once también se puede usar delante de muchas
instrucciones predefinidas para limitar su efecto a un solo
momento musical:
\relative { c'4( d) \once \slurDashed e4( f) | g4( a) \once \hideNotes b( c) | }
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\overrideProperty@translationof The overrideProperty command
Hay otra forma para la instrucción de sobreescritura,
\overrideProperty, que ocasionalmente es necesaria. La
mencionamos aquí con un propósito de exhaustividad, pero para ver
más detalles consulte
(extending)Trucos difíciles sección ‘Trucos difíciles’ en Extender.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\tweak@translationof The tweak command
La última instrucción de trucaje que está disponible es
\tweak. Se debe utilizar cuando varios objetos tienen
lugar en el mismo momento musical pero solo queremos cambiar las
propiedades de algunos de ellos, como una sola nota dentro de un
acorde. El uso de \override para la sobreescritura
afectaría a todas las notas del acorde, mientras que \tweak
afecta solamente al siguiente elemento del flujo de entrada.
He aquí un ejemplo. Suponga que queremos cambiar el tamaño de la
cabeza de la nota intermedia (el Mi) en un acorde de Do mayor. En
primer lugar, veamos lo que haría \once \override:
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
Vemos que la sobreescritura con override afecta a todas las
cabezas de las notas del acorde. Esto es así porque todas las
notas de un acorde ocurren en el mismo momento musical, y
la acción de \once es aplicar la sobreescritura a todos los
objetos de presentación del tipo especificado que ocurren en el
mismo momento musical que la propia instrucción de sobreescritura
\override.
La instrucción \tweak opera de una forma distinta. Actúa
sobre el elemento inmediatamente siguiente dentro del flujo de
entrada. En su forma más sencilla es efectivo solamente sobre
objetos que se crean directamente a partir del elemento siguiente,
en esencia las cabezas y las articulaciones.
Así pues, volviendo a nuestro ejemplo, el tamaño de la nota intermedia se cambiaría de la siguiente forma:
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
Observe que la sintaxis de \tweak no es igual que la de
\override. El contexto no se debe especificar; de hecho,
generaría un error hacerlo. Tanto el contexto como el objeto de
presentación están implícitos por el siguiente elemento del flujo
de entrada. Observe también que no debe haber un signo igual. Así
que la sintaxis de la instrucción \tweak en su forma
sencilla es:
\tweak propiedad-de-presentación #valor |
Una instrucción \tweak también se puede usar para modificar
sólo una de una serie de articulaciones, como se muestra aquí:
a'4^"Black" -\tweak color #red ^"Red" -\tweak color #green _"Green"
Observe que la instrucción \tweak debe venir precedida de
una marca de articulación porque la propia expresión trucada debe
aplicarse como una articulación. En el caso de más de una
sobreescritura de dirección (^ o _), gana la
sobreescritura situada más a la izquierda porque se aplica en
último lugar.
Los objetos tales como plicas y alteraciones accidentales se crean
más tarde, y no directamente a partir del evento que viene a
continuación. Aún es posible utilizar \tweak sobre tales
objetos creados indirectamente mediante el nombrado explícito del
objeto de presentación, siempre y cuando LilyPond pueda rastrear
su origen hasta el evento original:
<\tweak Accidental.color #red cis''4 \tweak Accidental.color #green es'' g''>
Esta forma extensa de la instrucción \tweak se puede describir
como
\tweak LayoutObject.layout-property #value "ANTES" \tweak objeto-de-presentación.propiedad-de-presentación valor |
La instrucción \tweak también se debe usar para cambiar la
apariencia de uno solo de un conjunto de grupos especiales
anidados que comiencen en el mismo instante musical. En el
siguiente ejemplo, el corchete del tresillo largo y el primero de
los tres corchetes cortos empiezan en el mismo momento musical, y
por ello cualquier instrucción \override se aplicaría a los
dos. En el ejemplo se usa \tweak para distinguir entre
ellos. La primera instrucción \tweak especifica que el
corchete del tresillo largo se debe colocar por encima de las
notas y el segundo especifica que el número del tresillo se debe
imprimir en rojo sobre el corchete del primer tresillo corto.
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color #red \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Si los grupos anidados no comienzan en el mismo momento, su
apariencia se puede modificar de la forma usual mediante
instrucciones \override:
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Referencia de la notación: (notation)La instrucción tweak sección ‘La instrucción tweak’ en Referencia de la Notación.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\single@translationof The single prefix
Supongamos que queremos enfatizar la cabeza de algunas notas trazándolas de color e incrementando su tamaño, y supongamos también hemos programado una función para hacer la tarea más cómoda:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { c''4 a \once \emphNoteHead f d | }
El prefijo \once funciona perfectamente para enfatizar
notas únicas o acordes completos, pero no se puede usar para
enfatizar una sola nota dentro de un acorde. Anteriormente
vimos cómo se puede usar la instrucción \tweak para
hacerlo, véase La instrucción \tweak. Pero \tweak no se puede usar con una
función; ahí es donde entra la instrucción \single:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { <c'' a \single \emphNoteHead f d>4 }
En resumen, \single convierte las sobreescrituras hechas
con\override en trucos hechos con \tweak de tal
manera que cuando hay varios objetos en el mismo instante de
tiempo musical (como las notas de un acorde), \single
afecta a una única nota, la que se genera por la expresión que
sigue inmediatamente, a diferencia de \once que afecta a
todos esos objetos.
El uso de \single de esta forma con una función cualquiera
que contenga solamente sobreescrituras, puede aplicarse a las
notas individuales de un acorde. Sin embargo, \single no
convierte \revert, \set ni \unset en trucos
de \tweak.
Manual de aprendizaje:
La instrucción \tweak,
Uso de variables para los ajustes de disposición.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] |
Este documento ha sido generado por gub el el 13 julio 2020 utilizando texi2html 1.82.
Otros idiomas: English, català, česky, deutsch, français, italiano, 日本語, nederlands.
Acerca de la selección automática del idioma.