2011-03-20 16 views
5

dentro de LilyPond que pueden cambiar el color de un tipo de objeto con una línea comoCambio de todos los colores en Lilypond

\override Staff.Clef #'color = #(rgb-color 0.4 0.5 0.6)

me gustaría tener todo en el mismo color (no predeterminada) , pero no encontré una lista de todos los objetos que podía colorear ni encontré un comando para cambiar todos los colores a la vez. ¿Alguien podría señalarme a cualquiera?

Respuesta

1

La lista de objetos gráficos que necesita se encuentra en la parte inferior de this page. Entonces, un enfoque simple aunque tedioso sería iterar a través de todos esos objetos que usas, p.

\override Staff.Clef  #'color = #(rgb-color 0.4 0.5 0.6) 
\override Staff.NoteHead #'color = #(rgb-color 0.4 0.5 0.6) 
\override Staff.Beam  #'color = #(rgb-color 0.4 0.5 0.6) 
\override Staff.Slur  #'color = #(rgb-color 0.4 0.5 0.6) 

etc.

Probablemente hay una manera mucho mejor, pero no puedo entenderlo. Alternativamente, as has been suggested before podrías considerar hacer un post-procesamiento en la salida de Lilypond, que puede ser más simple dependiendo de las herramientas que tengas disponibles.

recomiendo que lea la excelente documentación, en particular, cómo explorar el funcionamiento interno de referencia como cubierto por el Learning Manual y la Notation Reference

También es posible obtener una mejor respuesta de la lilypond-user mailing list.

5

El LilyPond Snippet Repository tiene un solution that iterates through the list of objects contained in all-grob-descriptions: Nota

#(define (override-color-for-all-grobs color) 
    (lambda (context) 
    (let loop ((x all-grob-descriptions)) 
    (if (not (null? x)) 
    (let ((grob-name (caar x))) 
     (ly:context-pushpop-property context grob-name 'color color) 
     (loop (cdr x))))))) 

% Example of usage: 
\relative c' { 
    \applyContext #(override-color-for-all-grobs (x11-color 'blue)) 
    c4\pp\< d e f 
    \grace { g16[(a g fis]) } g1\ff\! 
} 

que esto va a cambiar el color de cada objeto gráfico sólo si se ejecuta en el contexto adecuado (Score, creo que, por lo general suficiente), por lo que Es posible que deba hacer lo siguiente si se encuentra en medio de, por ejemplo, un contexto Voice:

\stopStaff 
\context Score 
\applyContext #(override-color-for-all-grobs (x11-color 'blue)) 
\startStaff 
Cuestiones relacionadas