Defining a custom staff context: Difference between revisions
Appearance
m Replace version="2.24.0" with version="2.24" now that the LilyWiki extension supports auto-selecting the latest release in a stable series |
mNo edit summary |
||
| (3 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
Instead of having to type the same customization commands every time you need to use a particular type of staff, you can define a custom staff context and use it instead. For example, instead of | Instead of having to type the same customization commands every time you need to use a particular type of staff, you can define a custom staff context and use it instead. For example, instead of | ||
\new Staff \with { ... } | |||
you would use | |||
\new MyCustomStaff | |||
A custom staff context can have any customizations that you would use in a Staff's \with block. Note that the custom staff's definition can be saved in a file that you <code>\include</code>, so you do not have to re-create it every time it is needed. | A custom staff context can have any customizations that you would use in a <code>Staff</code> context's <code>\with</code> block. Note that the custom staff's definition can be saved in a file that you <code>\include</code>, so you do not have to re-create it every time it is needed. | ||
<lilypond version="2.24"> | <lilypond version="2.24"> | ||
% DEFINE A CUSTOM STAFF CONTEXT FOR "LAYOUT" | % DEFINE A CUSTOM STAFF CONTEXT FOR "LAYOUT" | ||
\layout { | \layout { | ||
| Line 72: | Line 70: | ||
[[Category:Contexts and engravers]] | [[Category:Contexts and engravers]] | ||
[[Category:Tweaks and overrides]] | [[Category:Tweaks and overrides]] | ||
[[Category:Snippet]] | |||
Latest revision as of 08:07, 3 December 2025
Instead of having to type the same customization commands every time you need to use a particular type of staff, you can define a custom staff context and use it instead. For example, instead of
\new Staff \with { ... }
you would use
\new MyCustomStaff
A custom staff context can have any customizations that you would use in a Staff context's \with block. Note that the custom staff's definition can be saved in a file that you \include, so you do not have to re-create it every time it is needed.
\version "2.24"
% DEFINE A CUSTOM STAFF CONTEXT FOR "LAYOUT"
\layout {
\context {
% make a copy of the standard Staff context
\Staff
% give this custom context a name of your choice
\name MyCustomStaff
% tell LilyPond that commands that work in a standard
% Staff context should also work in this custom context
\alias Staff
% add customizations, these are just examples,
% they can be anything that can go in a staff's \with block
\consists "Pitch_squash_engraver"
squashedPosition = #0
\override NoteHead.style = #'slash
\override Stem.transparent = ##t
\override Flag.transparent = ##t
}
% define which "parent" contexts will accept this custom context as a "child"
\context { \Score \accepts MyCustomStaff }
\context { \ChoirStaff \accepts MyCustomStaff }
\context { \GrandStaff \accepts MyCustomStaff }
\context { \PianoStaff \accepts MyCustomStaff }
\context { \StaffGroup \accepts MyCustomStaff }
}
% DEFINE THE CUSTOM STAFF CONTEXT FOR "MIDI" TOO
% to avoid warnings the context has to be defined for each type of output
\midi {
\context {
\Staff
\name MyCustomStaff
\alias Staff
% the customizations are not needed for midi
% since they are for visual output only
}
\context { \Score \accepts MyCustomStaff }
\context { \ChoirStaff \accepts MyCustomStaff }
\context { \GrandStaff \accepts MyCustomStaff }
\context { \PianoStaff \accepts MyCustomStaff }
\context { \StaffGroup \accepts MyCustomStaff }
}
% EXAMPLE
\score {
<<
\new Staff {
c' d' e' f'
}
\new MyCustomStaff {
c' d' e' f'
}
>>
\layout { }
\midi { }
}