[ << Changing defaults ] | [Top][Contents][Index][ ? ] | [ Notation manual tables >> ] | ||
[ < Keeping contexts alive ] | [ Up : Interpretation contexts ] | [ Changing context default settings > ] |
5.1.4 Modifying context plug-ins
Notation contexts (like Score
and Staff
) not only store
properties, they also contain plug-ins called ‘engravers’ that create
notation elements. For example, the Voice
context contains a
Note_heads_engraver
and the Staff
context contains a
Key_engraver
.
For a full a description of each plug-in, see Engravers and Performers. Every context described in Contexts lists the engravers used for that context.
It can be useful to shuffle around these plug-ins. This is done by
starting a new context with \new
or \context
, and
modifying it,
\new context \with { \consists … \consists … \remove … \remove … etc. } { …music… }
where the … should be the name of an engraver. Here is a simple
example which removes Time_signature_engraver
and
Clef_engraver
from a Staff
context,
<< \new Staff \relative { f'2 g } \new Staff \with { \remove "Time_signature_engraver" \remove "Clef_engraver" } \relative { f'2 g2 } >>
In the second staff there are no time signature or clef symbols. This is a rather crude method of making objects disappear since it will affect the entire staff. This method also influences the spacing, which may or may not be desirable. More sophisticated methods of blanking objects are shown in Visibility and color of objects.
The next example shows a practical application. Bar lines and time
signatures are normally synchronized across the score. This is done
by the Timing_translator
and Default_bar_line_engraver
.
This plug-in keeps an administration of time signature, location
within the measure, etc. By moving these engraver from Score
to
Staff
context, we can have a score where each staff has its own
time signature.
\score { << \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } \relative { \time 3/4 c''4 c c c c c } \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } \relative { \time 2/4 c''4 c c c c c } >> \layout { \context { \Score \remove "Timing_translator" \remove "Default_bar_line_engraver" } } }
Known issues and warnings
The order in which the engravers are specified is the order in which they are called to carry out their processing. Usually the order in which the engravers are specified does not matter, but in a few special cases the order is important, for example where one engraver writes a property and another reads it, or where one engraver creates a grob and another must process it.
The following orderings are important:
-
the
Bar_engraver
must normally be first, -
the
New_fingering_engraver
must come before theScript_column_engraver
, -
the
Timing_translator
must come before theBar_number_engraver
.
See also
Installed Files: ‘ly/engraver-init.ly’.
[ << Changing defaults ] | [Top][Contents][Index][ ? ] | [ Notation manual tables >> ] | ||
[ < Keeping contexts alive ] | [ Up : Interpretation contexts ] | [ Changing context default settings > ] |
其他语言:català, deutsch, español, français, italiano, 日本語。
About automatic language selection.