[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

4.3 Apariencia de los objetos

@translationof Appearance of objects

Ahora vamos a poner en práctica lo que hemos aprendido con unos cuantos ejemplos que muestran cómo se pueden usar los trucos para cambiar el aspecto de la música impresa.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

4.3.1 Visibilidad y color de los objetos

@translationof Visibility and color of objects

Dentro de un uso educativo de la música, podríamos desear imprimir una partitura con ciertos elementos omitidos como ejercicio para el alumno, a quien se le pide que los complete. A la manera de ejemplo sencillo, supongamos que el ejercicio es escribir las líneas divisorias que faltan en un fragmento musical. Pero las líneas divisorias normalmente se insertan automáticamente. ¿Cómo hacemos para que no se impriman?

Antes de enredarnos con esto, recordemos que las propiedades de los objetos se agrupan en lo que hemos llamado interfaces (véase Propiedades de los interfaces). Esto es simplemente agrupar las propiedades que se pueden usar juntas para trucar un objeto gráfico: si una de ellas se necesita para un objeto, también las otras. Así, ciertos objetos usan las propiedades de algunos interfaces, otros usan las de otros interfaces. Los interfaces que contienen las propiedades que un determinado grob necesita se encuentran relacionadas en el manual RFI al final de la página que describe dicho grob, y esas propiedades se pueden ver mirando dichos interfaces.

Hemos explicado cómo encontrar información sobre los grobs en Propiedades de los objetos de presentación. Usando el mismo enfoque, vamos al RFI para buscar el objeto de presentación que imprime las líneas divisorias. A través del enlace Backend y All layout objects encontramos que hay un objeto de presentación llamado BarLine. Entre sus propiedades se encuentran dos que controlan la visibilidad: break-visibility y stencil. Las líneas divisorias también contemplan un número de interfaces, entre ellos el grob-interface, donde podemos encontrar las propiedades transparent y color. Todas ellas pueden afectar la visibilidad de las barras de compás (y, por supuesto, por extensión, también la de muchos otros objetos de presentación). Vamos a considerar cada uno de ellos por orden.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

La propiedad stencil (sello)

@translationof The stencil property

Esta propiedad controla la apariencia de las barras de compás mediante la especificación del símbolo (o «glifo») que se debe imprimir. Igual que como otras muchas propiedades, se puede establecer de forma que no imprima nada ajustando su valor a #f. Vamos a probarlo, como antes, omitiendo el Contexto implícito, Voice:

 
\relative {
  \time 12/16
  \override BarLine.stencil = ##f
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Las barras de compás todavía se imprimen. ¿Qué es lo que está mal? Vuelva al RFI y mire de nuevo la página que ofrece las propiedades del objeto BarLine. Al principio de la página dice “Barline objects are created by: Bar_engraver” (los objetos Barline se crean por el grabador Bar_engraver). Vaya a la página del grabador Bar_engraver siguiendo el enlace. Al final da una lista de contextos en los que el grabador de líneas divisorias opera. Todos ellos son del tipo Staff, y así la razón de que la instrucción \override no funcionara como esperábamos, es porque Barline no se encuentra en el contexto predeterminado Voice. Si el contexto no se especifica correctamente, la instrucción simplemente no funciona. No se produce ningún mensaje de error, y no se registra nada en el archivo log de registro. Vamos a intentar corregirlo escribiendo el contexto correcto:

 
\relative {
  \time 12/16
  \override Staff.BarLine.stencil = ##f
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Ahora las barras de compás han desaparecido. La operación de fijar la propiedad stencil al valor #f es tan frecuente que existe una abreviatura para ella, llamada \omit (omitir):

 
\relative {
  \time 12/16
  \omit Staff.BarLine
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Sin embargo, observe que el establecimiento de la propiedad stencil al valor #f produce errores cuando las se requieren las dimensiones del objeto para un procesamiento correcto. Por ejemplo, se generan errores si la propiedad stencil del objeto NoteHead se establece al valor #f. Si es el caso, podemos en vez de ello utilizar la función point-stencil, que establece el sello a un objeto con tamaño nulo:

 
\relative {
  c''4 c
  \once \override NoteHead.stencil = #point-stencil
  c4 c
}

[image of music]


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

The break-visibility (visibilidad en el salto)

@translationof The break-visibility property

Vemos en las propiedades de BarLine que aparecen en el RFI que la propiedad break-visibility requiere un vector de tres valores booleanos. Controlan respectivamente si las barras de compás se imprimen al final de una línea, en mitad de una línea, y al principio de las líneas. Para nuestro ejemplo, queremos que todas las barras de compás se supriman, por lo que el valor que necesitamos es #(#f #f #f) (disponible también bajo el nombre all-invisible, todas invisibles). Vamos a probarlo, recordando incluir el contexto de Staff. Observe también que al escribir este valor tenemos ## antes del paréntesis de apertura. Se necesita un # como parte de la sintaxis de las contantes vectoriales, y el primer símbolo de almohadilla # se necesita, como siempre, para preceder el valor en sí dentro de la instrucción \override.

 
\relative {
  \time 12/16
  \override Staff.BarLine.break-visibility = ##(#f #f #f)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Y podemos ver que esto también quita todas las líneas divisorias.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

La propiedad transparent (transparente)

@translationof The transparent property

En la relación de propiedades que se especifican en la página del grob-interface del RFI podemos ver que la propiedad transparent es un valor booleano. Esto se debe establecer a #t para hacer que el grob sea transparente. En el ejemplo siguiente vamos a hacer que la indicación de compás, y no las líneas divisorias, sea transparente. Para hacerlo tenemos que buscar el nombre del grob de la indicación de compás. Volviendo a la página ‘All layout objects’ del RFI, buscamos las propiedades del objeto de presentación TimeSignature. Se produce por parte del grabador Time_signature_engraver que como puede comprobar vive dentro del contexto de Staff y también contempla el interface grob-interface. Así pues, la instrucción que hace transparente a la indicación de compás es:

 
\relative {
  \time 12/16
  \override Staff.TimeSignature.transparent = ##t
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Una vez más, el establecimiento de la propiedad transparent es una operación bastante frecuente, de modo que tenemos una abreviatura llamada \hide (ocultar):

 
\relative {
  \time 12/16
  \hide Staff.TimeSignature
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

En ninguno de los dos casos aparece ya la indicación de compás, pero esta instrucción deja una separación en el lugar donde antes estaba la indicación de compás. Quizá esto es lo que queremos para un ejercicio en que el alumno deba escribirlo, pero en otras circunstancias esta separación podría no ser deseable. En vez de eso, para quitarla, el stencil o «sello» de la indicación de compás se debe establecer al valor #f:

 
\relative {
  \time 12/16
  \omit Staff.TimeSignature
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

y la diferencia es obvia: al establecer el sello al valor #f (posiblemente por medio de \omit) quitamos el objeto por completo; al hacer el objeto transparent (lo que puede hacerse utilizando \hide) lo dejamos donde está, pero lo hacemos invisible.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

La propiedad color

@translationof The color property

Para finalizar, intentemos hacer invisibles las barras de compás pintándolas de color blanco (hay un problema relacionado, que consiste en que la línea divisoria blanca puede tapar o no tapar las líneas del pentagrama a las que cruza. Podrá observar en algunos de los ejemplos que aparecen a continuación, que esto sucede de forma impredecible. Los detalles sobre por qué esto ocurre así, y cómo controlarlo, se estudian en objetos de blanco (notation)Pintar los objetos de blanco sección ‘Pintar los objetos de blanco’ en Referencia de la Notación; de momento estamos estudiando el color, por lo que le rogamos que acepte esta limitación por ahora).

El interface grob-interface especifica que la propiedad del color es una lista, pero no hay ninguna explicación sobre lo que debe ir en esa lista. La lista que requiere es realmente una lista de valores en unidades internas, pero para evitar tener que saber cuáles son, se ofrecen varias vías para la especificación de los colores. La primera forma es utilizar uno de los colores ‘normales’ que están relacionados en la primera tabla de la (notation)Lista de colores sección ‘Lista de colores’ en Referencia de la Notación. Para poner las líneas divisorias de color blanco, escribimos:

 
\relative {
  \time 12/16
  \override Staff.BarLine.color = #white
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

y de nuevo podemos comprobar que las barras de compás no son visibles. Observe que white no viene precedido de un apóstrofo: no es un símbolo, sino una variable. Cuando se evalúa, proporciona la lista de valores internos que se requieren para establecer el color a blanco. Los otros colores de la lista normal también son variables. Para convencerse de que esto funciona, quizá quiera cambiar el color a una de las otras variables de la lista.

La segunda forma de cambiar el color es utilizar la lista de nombres de colores de X11 que aparecen en la segunda lista de (notation)Lista de colores sección ‘Lista de colores’ en Referencia de la Notación. De todas formas, se hacen corresponder a los valores reales por medio de la función x11-color que convierte los símbolos de color de X11 en la lista de valores internos como éstos:

 
\relative {
  \time 12/16
  \override Staff.BarLine.color = #(x11-color 'white)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Observe que en este caso la función x11-color toma un símbolo como argumento, así que el símbolo debe ir precedido de un apóstrofo para evitar que resulte evaluado como si fuera una variable, y toda la llamada a la función se debe encerrar entre paréntesis.

Aún existe otra función, que convierte valores RGB en colores internos: la función rgb-color. Toma tres argumentos que dan las intensidades de rojo, verde y azul. Cada uno de ellos puede tomar valores entre 0 y 1. Por lo tanto, para establecer el color a rojo el valor debe ser (rgb-color 1 0 0) y para blanco debe ser (rgb-color 1 1 1):

 
\relative {
  \time 12/16
  \override Staff.BarLine.color = #(rgb-color 1 1 1)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Finalmente, existe también una escala de grises como parte del conjunto de colores de X11. Varían desde el negro, 'grey0, hasta el blanco, 'grey100, en pasos de 1. Vamos a ilustrar esto estableciendo todos los objetos de presentación de nuestro ejemplo a varias gradaciones de gris:

 
\relative {
  \time 12/16
  \override Staff.StaffSymbol.color = #(x11-color 'grey30)
  \override Staff.TimeSignature.color = #(x11-color 'grey60)
  \override Staff.Clef.color = #(x11-color 'grey60)
  \override Voice.NoteHead.color = #(x11-color 'grey85)
  \override Voice.Stem.color = #(x11-color 'grey85)
  \override Staff.BarLine.color = #(x11-color 'grey10)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Observe los contextos asociados con cada uno de los objetos de presentación. Es importante que estén correctamente escritos, o las instrucciones ¡no funcionarán! Recuerde que el contexto es aquel en que se encuentra el grabador correspondiente. El contesto predeterminado para los grabadores puede encontrarse empezando por el objeto de presentación, de ahí al grabador que lo produce, y en la página del grabador del RFI aparece en qué contexto se puede encontrar normalmente el grabador.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

4.3.2 Tamaño de los objetos

@translationof Size of objects

Empezaremos examinando de nuevo un ejemplo anterior (véase Anidado de expresiones musicales) que nos mostraba cómo introducir un pentagrama temporal, como en un (music-glossary)ossia sección ‘ossia’ en Glosario Musical.

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main" }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

Los fragmentos de Ossia se escriben normalmente sin clave ni compás, y por lo normal se imprimen más pequeños que el pentagrama principal. Ya sabemos cómo quitar la clave y el compás: simplemente establecemos el sello de cada uno de ellos a #f, como sigue:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
      }
      {
        \omit Staff.Clef
        \omit Staff.TimeSignature
        { f8 f c }
      }
    >>
    r4 |
  }
}

[image of music]

donde el par de llaves adicional después de la cláusula \with es necesario para asegurar que la sobreescritura encerrada y la música se aplican al pentagrama de ossia.

Pero ¿cuál es la diferencia entre modificar el contexto de pentagrama usando \with y modificar los sellos de clave y de compás con \override, o en este caso \omit? La diferencia principal es que los cambios que se realizan en una cláusula \with se hacen en el momento en que se crea el contexto, y permanecen activos como valores predeterminados durante toda la duración de dicho contexto, mientras que las instrucciones \set o \override incluidas dentro de la música son dinámicas: hacen cambios sincronizados con un punto concreto de la música. Si los cambios se deshacen o se devuelven mediante \unset o \revert volverán a su valor predeterminado que será el establecido en la cláusula \with, o si no se ha establecido ninguno en este lugar, los valores predeterminados normales.

Ciertas propiedades de contexto se pueden modificar solamente dentro de cláusulas \with. Son aquellas propiedades que no se pueden cambiar después de que el contexto se ha creado. alignAboveContext y su compañero, alignBelowContext, son dos de tales propiedades: una vez que el pentagrama se ha creado, su alineación está decidida y no tendría sentido intentar cambiarla más tarde.

Los valores predeterminados de las propiedades de los objetos de presentación también se pueden establecer dentro de cláusulas \with. Simplemente utilice la instrucción \override normal dejando aparte el nombre del contexto, ya que está definido sin ambigüedad como el contexto que la cláusula \with está modificando. De hecho, se producirá un error si se especifica un contexto en este lugar.

Así pues, podemos reemplazar el ejemplo anterior con

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        % Don't print clefs in this staff
        \override Clef.stencil = ##f
        % Don't print time signatures in this staff
        \override TimeSignature.stencil = ##f
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

Resulta que también podemos emplear aquí las abreviaturas \hide y \omit para fijar la propiedad transparent y borrar el stencil, lo que conduce al resultado siguiente:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        % Don't print clefs in this staff
        \omit Clef
        % Don't print time signatures in this staff
        \omit TimeSignature
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

Finalmente llegamos a la forma de cambiar el tamaño de los objetos de presentación.

Ciertos objetos de presentación se crean como glifos sacados de una fuente tipográfica. Entre ellos se encuentran las cabezas, alteraciones, elementos de marcado, claves, indicaciones de compás, indicaciones dinámicas y la letra de las canciones. Su tamaño se cambia mediante la modificación de la propiedad font-size, como veremos en breve. Otros objetos de presentación como ligaduras de unión y de expresión (en general, objetos de extensión) se trazan individualmente, por lo que no hay un tamaño de tipografía font-size asociado a ellos. Estos objetos generalmente derivan su tamaño de los objetos a los que están adosados, y por ello normalmente no hay necesidad de cambiarles el tamaño manualmente. Aún otras propiedades como la longitud de las plicas y las barras de compás, el grosor de las barras de corchea y otras líneas, y la separación de las líneas del pentagrama se deben modificar de otras formas especiales.

Volviendo al ejemplo del ossia, vamos a cambiar en primer lugar el tamaño de la tipografía. Podemos hacerlo de dos formas. Podemos cambiar el tamaño de las tipografías de cada uno de los tipos de objeto como las cabezas (NoteHeads) con instrucciones como

 
\override NoteHead.font-size = #-2

o podemos cambiar el tamaño de todas las tipografías estableciendo una propiedad especial, fontSize, utilizando \set, o mediante su inclusión dentro de una cláusula \with (pero sin el \set).

 
\set fontSize = #-2

Los dos enunciados producirían una reducción del tamaño de la tipografía en dos pasos a partir de su valor previo, donde cada paso reduce o aumenta el tamaño aproximadamente en un 12%.

Vamos a probarlo en nuestro ejemplo del ossia:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \omit Clef
        \omit TimeSignature
        % Reduce all font sizes by ~24%
        fontSize = #-2
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

Aún no está demasiado bien. Las cabezas y los corchetes de las notas son más pequeños, pero las plicas son demasiado largas en proporción, y las líneas del pentagrama están demasiado separadas entre sí. Se debe reducir su escala en proporción a la reducción de la tipografía. El siguiente apartado trata sobre cómo se hace esto.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

4.3.3 Longitud y grosor de los objetos

@translationof Length and thickness of objects

Las distancias y longitudes en LilyPond se miden generalmente en espacios de pentagrama, la distancia entre líneas adyacentes de la pauta (o de manera ocasional medios espacios), mientras que la mayoría de las propiedades de thickness (grosor) se miden en unidades de una propiedad interna llamada line-thickness. Por ejemplo, de forma predeterminada, a las líneas de los reguladores se les da un grosor de 1 unidad de line-thickness, mientras que el thickness de una plica es 1.3. Observe sin embargo que ciertas propiedades de grosor son diferentes; por ejemplo, el grosor de las barras de corchea se controla por medio del valor de beam-thickness, que se mide en espacios de pentagrama.

Entonces ¿cómo se tienen que escalar las longitudes en proporción al tamaño de la tipografía? Se puede hacer con la ayuda de una función especial que se llama magstep, pensada especialmente para este propósito. Toma un argumento, el cambio de tamaño de la tipografía (#-2 en nuestro ejemplo) y devuelve un factor de escalado adecuado para reducir otros objetos en la misma proporción. Se usa de la siguiente forma:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \omit Clef
        \omit TimeSignature
        fontSize = #-2
        % Reduce stem length and line spacing to match
        \override StaffSymbol.staff-space = #(magstep -2)
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

Puesto que la longitud de las plicas y muchas otras propiedades relacionadas con la longitudes calculan siempre con relación al valor de la propiedad staff-space, su longitud también ve reducida su escala automáticamente. Observe que esto afecta solamente a la escala vertical del ossia: la escala horizontal se determina por medio de la disposición de la música principal con el objeto de mantenerse en sincronía con ella, de forma que no resulte afectada por ninguno de estos cambios de tamaño. Por supuesto, si la escala de toda la música principal se cambiase de esta forma, entonces el espaciado horizontal se vería afectado. Trataremos de esto más tarde en la sección sobre la disposición.

Esto, en fin, completa la creación de un ossia. Los tamaños y longitudes del resto de los objetos se pueden modificar de manera análoga.

Para cambios de escala pequeños, como en el ejemplo de arriba, el grosor de las diversas líneas dibujadas como divisorias, barras de corchea, reguladores, ligaduras, etc, no requieren normalmente ningún ajuste global. Si el grosor de cualquier objeto de presentación en particular necesita ajustarse, se puede hacer mejor mediante la sobreescritura de su propiedad thickness. Anteriormente mostramos un ejemplo de cambio de grosor en las ligaduras, en Propiedades de los objetos de presentación. El grosor de todos los objetos trazados (es decir, aquellos que no se producen a partir de una tipografía) se pueden cambiar de la misma forma.


[ < ] [ > ]   [ << ] [ 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.