]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
add localAlterations property to ChoirStaff
[lilypond.git] / ly / engraver-init.ly
1 %%%% This file is part of LilyPond, the GNU music typesetter.
2 %%%%
3 %%%% Copyright (C) 1996--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
4 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
5 %%%%
6 %%%% LilyPond is free software: you can redistribute it and/or modify
7 %%%% it under the terms of the GNU General Public License as published by
8 %%%% the Free Software Foundation, either version 3 of the License, or
9 %%%% (at your option) any later version.
10 %%%%
11 %%%% LilyPond is distributed in the hope that it will be useful,
12 %%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
13 %%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 %%%% GNU General Public License for more details.
15 %%%%
16 %%%% You should have received a copy of the GNU General Public License
17 %%%% along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
18
19 \version "2.19.46"
20
21 \context {
22   \name "Global"
23
24   \accepts "Score"
25
26   \defaultchild "Score"
27   \description "Hard coded entry point for LilyPond.  Cannot be tuned."
28   \grobdescriptions #all-grob-descriptions
29 }
30
31 \context {
32   \type "Engraver_group"
33   \name "FretBoards"
34   \alias "Staff"
35   \description "A context for displaying fret diagrams."
36
37   \consists "Fretboard_engraver"
38   \consists "Axis_group_engraver"
39   \consists "Separating_line_group_engraver"
40   \consists "Font_size_engraver"
41   \consists "Instrument_name_engraver"
42
43   %% explicitly set instrument, so it is not inherited from the parent
44   instrumentName = #'()
45   shortInstrumentName = #'()
46
47   predefinedDiagramTable = #default-fret-table
48   handleNegativeFrets = #'recalculate
49   restrainOpenStrings = ##f
50 }
51
52 \context {
53   \type "Engraver_group"
54   \name "Staff"
55
56   \consists "Bar_engraver"
57   \consists "Pure_from_neighbor_engraver"
58   %% Bar_engraver must be first so default bars aren't overwritten
59   %% with empty ones.
60
61   \consists "Font_size_engraver"
62   \consists "Separating_line_group_engraver"
63   \consists "Dot_column_engraver"
64   \consists "Staff_collecting_engraver"
65
66   %% perhaps move to Voice context?
67   \consists "Ottava_spanner_engraver"
68   \consists "Clef_engraver"
69   \consists "Key_engraver"
70   \consists "Time_signature_engraver"
71   \consists "Ledger_line_engraver"
72   \consists "Staff_symbol_engraver"
73   \consists "Collision_engraver"
74   \consists "Grob_pq_engraver"
75   \consists "Rest_collision_engraver"
76   \consists "Accidental_engraver"
77   \consists "Piano_pedal_engraver"
78   \consists "Piano_pedal_align_engraver"
79   \consists "Instrument_name_engraver"
80   \consists "Axis_group_engraver"
81   \consists "Figured_bass_engraver"
82   \consists "Figured_bass_position_engraver"
83   \consists "Script_row_engraver"
84   \consists "Cue_clef_engraver"
85   \consists "Fingering_column_engraver"
86
87   localAlterations = #'()
88   createSpacing = ##t
89   ignoreFiguredBassRest = ##f
90
91   %% explicitly set instrument, so we don't get
92   %% weird effects when doing instrument names for
93   %% piano staves
94   instrumentName = #'()
95   shortInstrumentName = #'()
96
97   \defaultchild "Voice"
98   \accepts "CueVoice"
99   \accepts "NullVoice"
100   \accepts "Voice"
101
102   \description "Handles clefs, bar lines, keys, accidentals.  It can contain
103 @code{Voice} contexts."
104
105 }
106
107 \context {
108   \Staff
109   \type "Engraver_group"
110   \name "DrumStaff"
111   \alias "Staff"
112
113   \remove "Accidental_engraver"
114   \remove "Ottava_spanner_engraver"
115   \remove "Key_engraver"
116   \remove "Piano_pedal_engraver"
117
118   \description "Handles typesetting for percussion."
119
120   \denies "Voice"
121   \accepts "DrumVoice"
122   \defaultchild "DrumVoice"
123
124   clefGlyph = #"clefs.percussion"
125   clefPosition = #0
126   \override Script.staff-padding = #0.75
127 }
128
129
130 \context {
131   \type "Engraver_group"
132   \name "ChoirStaff"
133   \consists "Vertical_align_engraver"
134   topLevelAlignment = ##f
135   localAlterations = #'()
136
137   \consists "Instrument_name_engraver"
138   \consists "System_start_delimiter_engraver"
139   systemStartDelimiter = #'SystemStartBracket
140   %% explicitly set instrument, so it is not inherited from the parent
141   instrumentName = #'()
142   shortInstrumentName = #'()
143   vocalName = #'()
144   shortVocalName = #'()
145
146   \accepts "ChoirStaff"
147   \accepts "ChordNames"
148   \accepts "DrumStaff"
149   \accepts "Dynamics"
150   \accepts "FiguredBass"
151   \accepts "GrandStaff"
152   \accepts "Lyrics"
153   \accepts "OneStaff"
154   \accepts "PianoStaff"
155   \accepts "RhythmicStaff"
156   \accepts "Staff"
157   \accepts "StaffGroup"
158   \defaultchild "Staff"
159   \description "Identical to @code{StaffGroup} except that the
160 contained staves are not connected vertically."
161 }
162
163 \context{
164   \type "Engraver_group"
165
166   localAlterations = #'()
167   createSpacing = ##t
168
169   squashedPosition = #0
170   \name "RhythmicStaff"
171   \alias "Staff"
172
173   \override VoltaBracket.staff-padding = #3
174   \override StaffSymbol.line-count = #1
175
176   \override Stem.neutral-direction = #UP
177   \override Beam.neutral-direction = #UP
178
179   \consists "Font_size_engraver"
180   \consists "Separating_line_group_engraver"
181   \consists "Dot_column_engraver"
182   \consists "Bar_engraver"
183   \consists "Staff_symbol_engraver"
184   \consists "Pitch_squash_engraver"
185   \consists "Time_signature_engraver"
186   \consists "Instrument_name_engraver"
187   \consists "Axis_group_engraver"
188   \consists "Ledger_line_engraver"
189
190   %% explicitly set instrument, so it is not inherited from the parent
191   instrumentName = #'()
192   shortInstrumentName = #'()
193
194   \accepts "CueVoice"
195   \accepts "NullVoice"
196   \accepts "Voice"
197   \defaultchild "Voice"
198
199   \description "A context like @code{Staff} but for printing rhythms.
200 Pitches are ignored; the notes are printed on one line."
201 }
202
203
204 \context {
205   \type "Engraver_group"
206   \name "Voice"
207
208   \description "Corresponds to a voice on a staff.  This context
209 handles the conversion of dynamic signs, stems, beams, super- and
210 subscripts, slurs, ties, and rests.
211
212 You have to instantiate this explicitly if you want to have
213 multiple voices on the same staff."
214   %% Grace_engraver sets properties, it must come first.
215   \consists "Grace_engraver"
216   \consists "Font_size_engraver"
217
218   \consists "Pitched_trill_engraver"
219   \consists "Arpeggio_engraver"
220   \consists "Multi_measure_rest_engraver"
221   \consists "Text_spanner_engraver"
222   \consists "Trill_spanner_engraver"
223   \consists "Grob_pq_engraver"
224   \consists "Forbid_line_break_engraver"
225   \consists "Laissez_vibrer_engraver"
226   \consists "Repeat_tie_engraver"
227   \consists "Note_head_line_engraver"
228   \consists "Glissando_engraver"
229   \consists "Ligature_bracket_engraver"
230   \consists "Breathing_sign_engraver"
231   \consists "Note_heads_engraver"
232   \consists "Dots_engraver"
233   \consists "Rest_engraver"
234
235   %% switch on to make stem directions interpolate for the
236   %% center line.
237   %  \consists "Melody_engraver"
238
239   \consists "Stem_engraver"
240   \consists "Beam_engraver"
241   \consists "Grace_beam_engraver"
242   \consists "Auto_beam_engraver"
243   \consists "Grace_auto_beam_engraver"
244
245   %% must come before Script_column_engraver.
246   \consists "New_fingering_engraver"
247
248   \consists "Chord_tremolo_engraver"
249   \consists "Double_percent_repeat_engraver"
250   \consists "Percent_repeat_engraver"
251   \consists "Slash_repeat_engraver"
252   \consists "Part_combine_engraver"
253
254   \consists "Text_engraver"
255   \consists "Dynamic_engraver"
256   \consists "Dynamic_align_engraver"
257   \consists "Fingering_engraver"
258   \consists "Bend_engraver"
259
260   \consists "Script_engraver"
261   \consists "Script_column_engraver"
262   \consists "Rhythmic_column_engraver"
263   \consists "Note_spacing_engraver"
264   \consists "Spanner_break_forbid_engraver"
265   \consists "Phrasing_slur_engraver"
266   \consists "Cluster_spanner_engraver"
267   \consists "Slur_engraver"
268   \consists "Tie_engraver"
269   \consists "Tuplet_engraver"
270   \consists "Instrument_switch_engraver"
271 }
272
273 \context{
274   \Voice
275
276   \name "CueVoice"
277   \alias "Voice"
278   fontSize = #-4
279   \override NoteHead.ignore-ambitus = ##t
280   \override Stem.length-fraction = #(magstep -4)
281   \override Beam.length-fraction = #(magstep -4)
282   \override Beam.beam-thickness = #0.35
283 }
284
285 \context {
286   \Voice
287   \name "DrumVoice"
288   \alias "Voice"
289
290   \description "A voice on a percussion staff."
291   \remove "Arpeggio_engraver"
292   \consists "Grob_pq_engraver"
293
294   \remove "Note_head_line_engraver"
295   \remove "Glissando_engraver"
296   \remove "Ligature_bracket_engraver"
297   \remove "Note_heads_engraver"
298   \consists "Drum_notes_engraver"
299   \remove "New_fingering_engraver"
300
301   \remove "Fingering_engraver"
302
303   \remove "Cluster_spanner_engraver"
304 }
305
306 \context{
307   \type "Engraver_group"
308   \name "GrandStaff"
309   localAlterations = #'()
310
311   \description "A group of staves, with a brace on the left
312 side, grouping the staves together.  The bar lines of the
313 contained staves are connected vertically."
314
315   \consists "Instrument_name_engraver"
316   \consists "Span_bar_engraver"
317   %% The default for DynamicText.extra-spacing-width causes dynamics to
318   %% be placed across span bars, so switch it off:
319   \override DynamicText.extra-spacing-width = ##f
320   \consists "Span_bar_stub_engraver"
321   \consists "Span_arpeggio_engraver"
322   \consists "System_start_delimiter_engraver"
323   \consists "Vertical_align_engraver"
324   systemStartDelimiter = #'SystemStartBrace
325   topLevelAlignment = ##f
326   %% explicitly set instrument, so it is not inherited from the parent
327   instrumentName = #'()
328   shortInstrumentName = #'()
329
330   \defaultchild "Staff"
331   \accepts "ChordNames"
332   \accepts "DrumStaff"
333   \accepts "Dynamics"
334   \accepts "FiguredBass"
335   \accepts "Lyrics"
336   \accepts "RhythmicStaff"
337   \accepts "Staff"
338   \accepts "TabStaff"
339 }
340
341 \context{
342   \GrandStaff
343   \name "PianoStaff"
344   \alias "GrandStaff"
345
346   \description "Just like @code{GrandStaff}, but the staves are only removed
347 together, never separately."
348
349   \consists "Vertical_align_engraver"
350   \consists "Keep_alive_together_engraver"
351   topLevelAlignment = ##f
352
353   instrumentName = #'()
354   shortInstrumentName = #'()
355 }
356
357 \context {
358   \type "Engraver_group"
359   \name "StaffGroup"
360
361   \consists "Vertical_align_engraver"
362   topLevelAlignment = ##f
363
364   \consists "Instrument_name_engraver"
365   \consists "Span_bar_engraver"
366   %% The default for DynamicText.extra-spacing-width causes dynamics to
367   %% be placed across span bars, so switch it off:
368   \override DynamicText.extra-spacing-width = ##f
369   \consists "Span_bar_stub_engraver"
370   \consists "Span_arpeggio_engraver"
371   systemStartDelimiter = #'SystemStartBracket
372   %% explicitly set instrument, so it is not inherited from the parent
373   instrumentName = #'()
374   shortInstrumentName = #'()
375
376   \consists "System_start_delimiter_engraver"
377
378   \defaultchild "Staff"
379   \accepts "ChoirStaff"
380   \accepts "ChordNames"
381   \accepts "DrumStaff"
382   \accepts "FiguredBass"
383   \accepts "FretBoards"
384   \accepts "GrandStaff"
385   \accepts "Lyrics"
386   \accepts "OneStaff"
387   \accepts "PianoStaff"
388   \accepts "RhythmicStaff"
389   \accepts "Staff"
390   \accepts "StaffGroup"
391   \accepts "TabStaff"
392
393   \description "Groups staves while adding a bracket on the left
394 side, grouping the staves together.  The bar lines of the contained
395 staves are connected vertically.  @code{StaffGroup} only consists of
396 a collection of staves, with a bracket in front and spanning bar lines."
397 }
398
399 \context {
400   \type "Engraver_group"
401   \name "OneStaff"
402   \accepts "ChordNames"
403   \accepts "DrumStaff"
404   \accepts "Dynamics"
405   \accepts "FiguredBass"
406   \accepts "FretBoards"
407   \accepts "GregorianTranscriptionStaff"
408   \accepts "KievanStaff"
409   \accepts "Lyrics"
410   \accepts "MensuralStaff"
411   \accepts "NoteNames"
412   \accepts "PetrucciStaff"
413   \accepts "RhythmicStaff"
414   \accepts "Staff"
415   \accepts "TabStaff"
416   \accepts "VaticanaStaff"
417   \defaultchild "Staff"
418   \consists "Axis_group_engraver"
419
420   \description "Provides a common axis for the contained staves,
421 making all of them appear in the same vertical space.  This can be
422 useful for typesetting staves of different types in immediate succession
423 or for temporarily changing the character of one staff or overlaying
424 it with a different one.  Often used with @code{\\stopStaff} and
425 @code{\\startStaff} for best results."
426 }
427
428 \context {
429   \type "Engraver_group"
430   \name "Dynamics"
431   \alias "Voice"
432   \consists "Bar_engraver"
433   \consists "Piano_pedal_engraver"
434   \consists "Script_engraver"
435   \consists "Dynamic_engraver"
436   \consists "Dynamic_align_engraver"
437   \consists "Text_engraver"
438   \consists "Text_spanner_engraver"
439   \consists "Font_size_engraver"
440   \consists "Axis_group_engraver"
441
442   pedalSustainStrings = #'("Ped." "*Ped." "*")
443   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
444   \override VerticalAxisGroup.staff-affinity = #CENTER
445   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
446     #'((basic-distance . 5)
447        (padding . 0.5))
448   \override TextScript.font-shape = #'italic
449   \override DynamicLineSpanner.Y-offset = #0
450   \override DynamicLineSpanner.outside-staff-priority = ##f
451   \override DynamicText.outside-staff-priority = ##f
452   \override Hairpin.outside-staff-priority = ##f
453
454   \description "Holds a single line of dynamics, which will be
455 centered between the staves surrounding this context."
456 }
457
458
459 \context{
460   \type "Engraver_group"
461
462   \description "Corresponds to a voice with lyrics.  Handles the
463 printing of a single line of lyrics."
464
465   \name "Lyrics"
466   \consists "Lyric_engraver"
467   \consists "Extender_engraver"
468   \consists "Hyphen_engraver"
469   \consists "Stanza_number_engraver"
470   \consists "Instrument_name_engraver"
471   \consists "Font_size_engraver"
472   \consists "Axis_group_engraver"
473   \consists "Pure_from_neighbor_engraver"
474   searchForVoice = ##f
475   %% explicitly set instrument, so it is not inherited from the parent
476   instrumentName = #'()
477   shortInstrumentName = #'()
478
479   \override VerticalAxisGroup.remove-first = ##t
480   \override VerticalAxisGroup.remove-empty = ##t
481   \override VerticalAxisGroup.staff-affinity = #UP
482   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
483     #'((basic-distance . 5.5)
484        (padding . 0.5)
485        (stretchability . 1))
486   \override VerticalAxisGroup.nonstaff-nonstaff-spacing =
487      #'((basic-distance . 0)
488         (minimum-distance . 2.8)
489         (padding . 0.2)
490         (stretchability . 0))
491   \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing.padding = #1.5
492   \override InstrumentName.self-alignment-Y = ##f
493
494   %% sync with define-grobs.scm ;
495   \override InstrumentName.font-size = #1.0
496
497   %% make sure that barlines aren't collapsed, when
498   %% Bar_engraver is there.
499   \override BarLine.bar-extent = #'(-0.05 . 0.05)
500
501 }
502
503 \context {
504   \type "Engraver_group"
505   \name "NoteNames"
506   \description "A context for printing the names of notes."
507   \consists "Axis_group_engraver"
508
509   \override VerticalAxisGroup.staff-affinity = #UP
510   \override VerticalAxisGroup.nonstaff-nonstaff-spacing =
511     #'((basic-distance . 0)
512        (minimum-distance . 2.8)
513        (padding . 0.2)
514        (stretchability . 0))
515   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
516     #'((basic-distance . 5.5)
517        (padding . 0.5)
518        (stretchability . 1))
519   \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing.padding = 1.5
520
521   \consists "Tie_engraver"
522   \consists "Note_name_engraver"
523   \consists "Separating_line_group_engraver"
524 }
525
526 \context {
527   \type "Engraver_group"
528   \name "ChordNames"
529   \alias Staff                  % Catch Staff-level overrides like
530                                 % \key, \transposition
531   \description "Typesets chord names."
532
533   \consists "Separating_line_group_engraver"
534   \consists "Chord_name_engraver"
535   \consists "Axis_group_engraver"
536   %\consists "Note_spacing_engraver"
537
538   \override VerticalAxisGroup.remove-first = ##t
539   \override VerticalAxisGroup.remove-empty = ##t
540   \override VerticalAxisGroup.staff-affinity = #DOWN
541   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
542   \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
543   \override ParenthesesItem.font-size = #1.5
544 }
545
546 \context {
547   \type "Score_engraver"
548   \name "Score"
549
550   \description "This is the top level notation context.  No
551 other context can contain a @code{Score} context.  This context
552 handles the administration of time signatures.  It also makes sure
553 that items such as clefs, time signatures, and key-signatures are
554 aligned across staves.
555
556 You cannot explicitly instantiate a @code{Score} context (since it
557 is not contained in any other context).  It is instantiated
558 automatically when an output definition (a @code{\\score} or
559 @code{\\layout} block) is processed."
560
561   \consists "Paper_column_engraver"
562   \consists "Repeat_acknowledge_engraver"
563   \consists "Staff_collecting_engraver"
564
565   \alias "Timing"
566
567   %% An alias for Timing is established by the Timing_translator in
568   %% whatever context it is initialized, and the timing variables are
569   %% then copied from wherever Timing had been previously established.
570   %% The alias at Score level provides a target for initializing
571   %% Timing variables in layout definitions before any
572   %% Timing_translator has been run.
573
574   %% timing translator must come BEFORE bar number engraver
575   \consists "Timing_translator"
576   \consists "Default_bar_line_engraver"
577   \consists "Output_property_engraver"
578   \consists "Tweak_engraver"
579   \consists "System_start_delimiter_engraver"
580   \consists "Mark_engraver"
581   \consists "Volta_engraver"
582   \consists "Metronome_mark_engraver"
583   \consists "Break_align_engraver"
584   \consists "Spacing_engraver"
585   \consists "Grace_spacing_engraver"
586   \consists "Vertical_align_engraver"
587   \consists "Stanza_number_align_engraver"
588   \consists "Bar_number_engraver"
589   \consists "Parenthesis_engraver"
590   \consists "Concurrent_hairpin_engraver"
591   \consists "Beam_collision_engraver"
592   \consists "Footnote_engraver"
593
594   \defaultchild "Staff"
595
596   \accepts "ChoirStaff"
597   \accepts "ChordNames"
598   \accepts "Devnull"
599   \accepts "DrumStaff"
600   \accepts "Dynamics"
601   \accepts "FiguredBass"
602   \accepts "FretBoards"
603   \accepts "GrandStaff"
604   \accepts "GregorianTranscriptionStaff"
605   \accepts "KievanStaff"
606   \accepts "Lyrics"
607   \accepts "MensuralStaff"
608   \accepts "NoteNames"
609   \accepts "OneStaff"
610   \accepts "PetrucciStaff"
611   \accepts "PianoStaff"
612   \accepts "RhythmicStaff"
613   \accepts "Staff"
614   \accepts "StaffGroup"
615   \accepts "TabStaff"
616   \accepts "VaticanaStaff"
617
618   noteToFretFunction = #determine-frets
619   predefinedDiagramTable = ##f
620   soloText = #"Solo"
621   soloIIText = #"Solo II"
622   aDueText = #"a2"
623   printPartCombineTexts = ##t
624   partCombineTextsOnNote = ##t
625   systemStartDelimiter =#'SystemStartBar
626
627   drumStyleTable = #drums-style
628
629   associatedVoiceType = #'Voice
630   melismaBusyProperties = #default-melisma-properties
631   tieWaitForNote = ##f
632   clefGlyph = #"clefs.G"
633   clefPosition = #-2
634   middleCClefPosition = #-6
635   middleCPosition = #-6
636   firstClef = ##t
637
638   crescendoSpanner = #'hairpin
639   decrescendoSpanner = #'hairpin
640
641   defaultBarType = #"|"
642   doubleRepeatType = #":..:"
643   startRepeatType = #".|:"
644   endRepeatType = #":|."
645   alternativeRestores = #'(measurePosition measureLength lastChord)
646   barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers
647   barNumberFormatter = #robust-bar-number-function
648   clefTranspositionFormatter = #clef-transposition-markup
649   cueClefTranspositionFormatter = #clef-transposition-markup
650   automaticBars = ##t
651
652   explicitClefVisibility = #all-visible
653   explicitCueClefVisibility = #end-of-line-invisible
654   explicitKeySignatureVisibility = #all-visible
655   initialTimeSignatureVisibility = #end-of-line-invisible
656
657   repeatCountVisibility = #all-repeat-counts-visible
658
659   %% Other Timing variables are derived and set by the Timing_translator
660   %% at initialization time by calling the functions in
661   %% scm/time-signature-settings.scm
662
663   timeSignatureSettings = #default-time-signature-settings
664   timeSignatureFraction = 4/4
665
666   beamHalfMeasure = ##t
667
668   autoBeaming = ##t
669   autoBeamCheck = #default-auto-beam-check
670
671   completionFactor = #unity-if-multimeasure
672
673   scriptDefinitions = #default-script-alist
674
675   pedalSustainStrings = #'("Ped." "*Ped." "*")
676   pedalSustainStyle = #'text
677   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
678   pedalUnaCordaStyle = #'text
679
680   %% These are in ordinary italic font, including the *,
681   %% but they are unlikely to be used,
682   %% as the default pedal-style for SostenutoPedal is 'mixed':
683   %% i.e.  Sost. Ped_____________________
684   pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
685   pedalSostenutoStyle = #'mixed
686
687   harmonicAccidentals = ##t
688   fingeringOrientations = #'(up down)
689   stringNumberOrientations = #'(up down)
690   strokeFingerOrientations = #'(right)
691
692   lyricMelismaAlignment = #LEFT
693   markFormatter = #format-mark-letters
694   rehearsalMark = #1
695   subdivideBeams = ##f
696   extraNatural = ##t
697   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
698   autoCautionaries = #'()
699
700   printKeyCancellation = ##t
701   keyAlterationOrder = #`(
702     (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
703     (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
704     (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
705     (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
706   )
707
708   barCheckSynchronize = ##f
709
710   %% chord names:
711   chordNameFunction = #ignatzek-chord-names
712   minorChordModifier = #(make-simple-markup "m")
713   additionalPitchPrefix = #"" % was "add"
714   majorSevenSymbol = #whiteTriangleMarkup
715   chordNameLowercaseMinor = ##f
716   chordNameSeparator = #(make-hspace-markup 0.5)
717   slashChordSeparator = #(make-simple-markup "/")
718   chordNameExceptions = #ignatzekExceptions
719   chordNoteNamer = #'()
720   chordRootNamer = #note-name->markup
721   chordPrefixSpacer = #0
722   chordNameExceptionsFull = #fullJazzExceptions
723   chordNameExceptionsPartial = #partialJazzExceptions
724   noChordSymbol = #(make-simple-markup "N.C.")
725
726   %% tablature:
727   stringOneTopmost = ##t
728   highStringOne = ##t
729
730   %% One may change the string tunings as follows :
731   %% The length of the list must be equal to the number of strings
732   stringTunings = #guitar-tuning
733   tablatureFormat = #fret-number-tablature-format
734   tabStaffLineLayoutFunction = #tablature-position-on-lines
735
736 %%
737   figuredBassFormatter = #format-bass-figure
738   metronomeMarkFormatter = #format-metronome-markup
739
740   %% See also make-voice-props-set
741   graceSettings = #score-grace-settings
742
743   keepAliveInterfaces = #'(
744     bass-figure-interface
745     chord-name-interface
746     cluster-beacon-interface
747     fret-diagram-interface
748     lyric-syllable-interface
749     note-head-interface
750     tab-note-head-interface
751     lyric-interface
752     percent-repeat-item-interface
753     percent-repeat-interface
754
755     ;; need this, as stanza numbers are items, and appear only once.
756     stanza-number-interface
757   )
758   %% \quoteDuring is supposed to quote everything, cueDuring only the essentials
759   quotedEventTypes = #'(StreamEvent)
760   quotedCueEventTypes = #'(
761     note-event
762     rest-event
763     tie-event
764     beam-event
765     tuplet-span-event)
766   instrumentTransposition = #(ly:make-pitch 0 0 0)
767
768   topLevelAlignment = ##t
769
770   timing = ##t
771 }
772
773
774
775
776 \context {
777   \type "Engraver_group"
778   \name "FiguredBass"
779   \description "A context for printing a figured bass line."
780
781   \consists "Figured_bass_engraver"
782   \consists "Separating_line_group_engraver"
783   \consists "Axis_group_engraver"
784
785   \override VerticalAxisGroup.remove-empty = ##t
786   \override VerticalAxisGroup.remove-first = ##t
787   \override VerticalAxisGroup.staff-affinity = #UP
788   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
789   \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
790 }
791
792 \context {
793   \name "Devnull"
794   \type "Engraver_group"
795
796   %% don't want to route anything out of here:
797   \alias "Staff"
798   \alias "Voice"
799   \description "Silently discards all musical information given to this
800 context."
801 }
802
803 \context {
804   \name "NullVoice"
805   \type "Engraver_group"
806   \description "For aligning lyrics without printing notes"
807
808   %% don't route anything out of here
809   \alias "Staff"
810   \alias "Voice"
811
812   %% provide non-printing NoteHeads with proper extents for lyric alignment
813   \consists "Note_heads_engraver"
814   \omit NoteHead
815   \override NoteHead.X-extent = #(lambda (g)
816     (ly:stencil-extent (ly:note-head::print g) X))
817
818   %% generate no accidentals
819   nullAccidentals = ##t
820
821   %% keep noteheads inside the staff
822   \consists "Pitch_squash_engraver"
823   squashedPosition = 0
824
825   %% generate no ledger lines, needed for staves with custom
826   %% line positions and ledger lines that appear inside the staff
827   \override NoteHead.no-ledgers = ##t
828
829   %% the engravers that control the 'busy' flags for note-onsets and melismata
830   \consists "Grob_pq_engraver"
831   \consists "Tie_engraver"
832   \omit Tie
833   \consists "Beam_engraver"
834   \omit Beam
835   \consists "Slur_engraver"
836   \omit Slur
837 }
838
839 \context {
840   \Voice
841   \name "TabVoice"
842   \alias "Voice"
843   \consists "Tab_note_heads_engraver"
844   \consists "Tab_tie_follow_engraver"
845
846   \remove "Note_heads_engraver"
847   \remove "Fingering_engraver"
848   \remove "New_fingering_engraver"
849   \remove "Pitched_trill_engraver"
850
851   \description "Context for drawing notes in a Tab staff."
852
853   %% No accidental in tablature !
854   \remove "Accidental_engraver"
855 }
856
857 \context {
858   \Staff
859   \alias "Staff"
860   \name "TabStaff"
861   \denies "Voice"
862   \consists "Tab_staff_symbol_engraver"
863
864   \description "Context for generating tablature. It accepts only @code{TabVoice}
865 contexts and handles the line spacing, the tablature clef etc. properly."
866
867   \accepts "TabVoice"
868   \defaultchild "TabVoice"
869
870   %% 6 strings, bigger spacing
871   \override StaffSymbol.staff-space = #1.5
872
873   %% Don't draw stems over the tablature figures !
874   \override Stem.avoid-note-head = ##t
875
876   %% No accidental in tablature !
877   \remove "Accidental_engraver"
878   \remove "Key_engraver"
879
880   \remove "Ottava_spanner_engraver"
881   %% the clef handler
882   \override Clef.stencil = #clef::print-modern-tab-if-set
883   %% no time signature
884   \override TimeSignature.stencil = ##f
885   %% no arpeggios
886   \override Arpeggio.stencil = ##f
887   %% we ignore collision warnings that may occur due to
888   %% stem overlapping, because we have no stems ;-)
889   \override NoteColumn.ignore-collision = ##t
890   %% Special "TAB" clef
891   clefGlyph = #"clefs.tab"
892   clefPosition = #0
893   %% Change string if note results in negative fret number
894   handleNegativeFrets = #'recalculate
895   %% Allow open strings even if minimumFret is set
896   restrainOpenStrings = ##f
897
898   %% TabStaff increase the staff-space, which in turn
899   %% increases beam thickness and spacing; beams are
900   %% too big. We have to adjust the beam settings:
901   \override Beam.beam-thickness = #0.32
902   \override Beam.length-fraction = #0.62
903   %% the same goes for tremolo beams
904   \override StemTremolo.beam-thickness = #0.32
905   %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
906   %% and the tablature staff space is scaled (1.5 by default),
907   %% so we use the inversion of the scale factor:
908   \override StemTremolo.length-fraction = #(lambda (grob)
909                                                (/ 1 (ly:staff-symbol-staff-space grob)))
910   \override StemTremolo.beam-width = #stem-tremolo::calc-tab-width
911
912   %% make the Stems as short as possible to minimize their influence
913   %% on the slur::calc-control-points routine
914   \override Stem.no-stem-extend = ##t
915   \override Flag.style = #'no-flag
916   \override Stem.details = #'((lengths 0 0 0 0 0 0)
917                                 (beamed-lengths 0 0 0)
918                                 (beamed-minimum-free-lengths 0 0 0)
919                                 (beamed-extreme-minimum-free-lengths 0 0)
920                                 (stem-shorten 0 0))
921   %% after all, the stubs of the stems may still be visible, so ...
922   \override Stem.stencil = ##f
923   \override Flag.stencil = ##f
924   %% automatic beams should be suppressed for similar reasons ...
925   autoBeaming = ##f
926   %% remove beams, dots and rests ...
927   \override Beam.stencil = ##f
928   \override StemTremolo.stencil = ##f
929   \override Dots.stencil = ##f
930   \override Rest.stencil = ##f
931   \override MultiMeasureRest.stencil = ##f
932   \override MultiMeasureRestNumber.stencil = ##f
933   \override MultiMeasureRestText.stencil = ##f
934   %% ... all kinds of ties/slurs
935   \override Tie.stencil = ##f
936   \override RepeatTie.stencil = ##f
937   \override LaissezVibrerTie.stencil = ##f
938   \override Slur.stencil = #slur::draw-tab-slur
939   \override PhrasingSlur.stencil = ##f
940   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
941   \override Tie.after-line-breaking = #tie::handle-tab-note-head
942   \override RepeatTie.after-line-breaking = #repeat-tie::handle-tab-note-head
943   %% ... and all kinds of markups, spanners etc.
944   \override TupletBracket.stencil = ##f
945   \override TupletNumber.stencil = ##f
946   \override DynamicText.stencil = ##f
947   \override DynamicTextSpanner.stencil = ##f
948   \override TextSpanner.stencil = ##f
949   \override Hairpin.stencil = ##f
950   \override Script.stencil = ##f
951   \override TextScript.stencil = ##f
952   \override Glissando.stencil = #glissando::draw-tab-glissando
953   %% the direction for glissando lines will be automatically corrected
954   \override Glissando.extra-dy = #glissando::calc-tab-extra-dy
955   \override Glissando.bound-details.right = #`((attach-dir . ,LEFT)
956                                                    (padding . 0.3))
957   \override Glissando.bound-details.left = #`((attach-dir . ,RIGHT)
958                                                    (padding . 0.3))
959   %% dead notes
960   \override TabNoteHead.glyph-name = #tab-note-head::calc-glyph-name
961   \override TabNoteHead.stencil = #tab-note-head::whiteout-if-style-set
962 }
963
964 \context {
965   \Voice
966   \name "VaticanaVoice"
967   \alias "Voice"
968   \description "Same as @code{Voice} context, except that it is
969 accommodated for typesetting Gregorian Chant in the notational style
970 of Editio Vaticana."
971
972   \remove "Slur_engraver"
973   \remove "Stem_engraver"
974   \remove "Ligature_bracket_engraver"
975   \consists "Vaticana_ligature_engraver"
976   \remove "Text_spanner_engraver"
977   \consists "Episema_engraver"
978
979   %% Set default head for notes outside of \[ \].
980   \override NoteHead.style = #'vaticana.punctum
981
982   %% Put some space before and after divisiones.
983   %% FIXME: This does not seem to show any effect.
984   \override Script.padding = #0.5
985
986   %% There are no beams in Gregorian Chant notation.
987   autoBeaming = ##f
988 }
989
990 \context {
991   \Staff
992   \name "VaticanaStaff"
993   \alias "Staff"
994   \denies "Voice"
995   \accepts "VaticanaVoice"
996   \defaultchild "VaticanaVoice"
997
998   \description "Same as @code{Staff} context, except that it is
999 accommodated for typesetting Gregorian Chant in the notational style
1000 of Editio Vaticana."
1001
1002   \remove "Time_signature_engraver"
1003   \consists "Custos_engraver"
1004
1005   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1006   %% not show up any more among other line breaking issues.
1007   %% Instead, we make the grob transparent.
1008   \override BarLine.transparent = ##t
1009
1010   \override StaffSymbol.line-count = #4
1011   \override StaffSymbol.thickness = #0.6
1012
1013   %% FIXME: unit on StaffSymbol's width should be \linewidth.
1014   %% \override StaffSymbol.width = #60.0
1015
1016   %% Choose vaticana do clef on 3rd line as default.
1017   clefGlyph = #"clefs.vaticana.do"
1018   middleCPosition = #1
1019   middleCClefPosition = #1
1020   clefPosition = #1
1021   clefTransposition = #0
1022
1023   %% Select vaticana style font.
1024   \override KeySignature.glyph-name-alist = #alteration-vaticana-glyph-name-alist
1025   \override Accidental.glyph-name-alist = #alteration-vaticana-glyph-name-alist
1026   \override Custos.style = #'vaticana
1027   \override Custos.neutral-position = #3
1028   \override Custos.neutral-direction = #DOWN
1029   \override Dots.style = #'vaticana
1030 }
1031
1032 \context {
1033   \Voice
1034   \name "GregorianTranscriptionVoice"
1035   \alias "Voice"
1036   \consists "Episema_engraver"
1037
1038   %% Removing ligature bracket engraver without replacing it by some
1039   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
1040   %% warning for every "\[" and "\]".  Therefore, we make the grob
1041   %% transparent instead.
1042   \override LigatureBracket.transparent = ##t
1043
1044   %% Put some space before and after divisiones.
1045   %% FIXME: This does not seem to show any effect.
1046   \override Script.padding = #0.5
1047
1048   %% There are no beams in Gregorian Chant notation.
1049   autoBeaming = ##f
1050 }
1051
1052 \context {
1053   \Staff
1054   \name "GregorianTranscriptionStaff"
1055   \alias "Staff"
1056   \denies "Voice"
1057   \accepts "GregorianTranscriptionVoice"
1058   \defaultchild "GregorianTranscriptionVoice"
1059
1060   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1061   %% not show up any more among other line breaking issues.
1062   %% Instead, we make the grob transparent.
1063   \override BarLine.transparent = ##t
1064 }
1065
1066 \context {
1067   \Voice
1068   \name "MensuralVoice"
1069   \alias "Voice"
1070   \description "Same as @code{Voice} context, except that it is
1071 accommodated for typesetting a piece in mensural style."
1072
1073   \remove "Slur_engraver"
1074   \remove "Ligature_bracket_engraver"
1075   \consists "Mensural_ligature_engraver"
1076
1077   %% Set default head for notes outside of \[ \].
1078   \override NoteHead.style = #'mensural
1079   \override Rest.style = #'mensural
1080   \override Flag.style = #'mensural
1081
1082   %% There are no beams in mensural notation.
1083   autoBeaming = ##f
1084 }
1085
1086 \context {
1087   \Staff
1088   \name "MensuralStaff"
1089   \alias "Staff"
1090   \denies "Voice"
1091   \defaultchild "MensuralVoice"
1092   \accepts "MensuralVoice"
1093   \description "Same as @code{Staff} context, except that it is
1094 accommodated for typesetting a piece in mensural style."
1095
1096   \consists "Custos_engraver"
1097
1098   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1099   %% not show up any more among other line breaking issues.
1100   %% Instead, we make the grob transparent.
1101   \override BarLine.transparent = ##t
1102
1103   \override StaffSymbol.thickness = #0.6
1104
1105   %% FIXME: unit on StaffSymbol's width should be \linewidth.
1106   %% \override StaffSymbol.width = #60.0
1107
1108   %% Choose mensural g clef on 2nd line as default.
1109   clefGlyph = #"clefs.mensural.g"
1110   middleCClefPosition = #-6
1111   middleCPosition = #-6
1112   clefPosition = #-2
1113   clefTransposition = #0
1114
1115   %% Select mensural style font.
1116   \override TimeSignature.style = #'mensural
1117   \override KeySignature.glyph-name-alist = #alteration-mensural-glyph-name-alist
1118   \override Accidental.glyph-name-alist = #alteration-mensural-glyph-name-alist
1119   \override AccidentalSuggestion.glyph-name-alist = #alteration-mensural-glyph-name-alist
1120   \override Custos.style = #'mensural
1121   \override Custos.neutral-position = #3
1122   \override Custos.neutral-direction = #DOWN
1123
1124   %% Accidentals are valid only once (same as
1125   %% \accidentalStyle forget)
1126   extraNatural = ##f
1127   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1128   autoCautionaries = #'()
1129   printKeyCancellation = ##f
1130 }
1131
1132 \context {
1133   \Voice
1134   \name "PetrucciVoice"
1135   \alias "Voice"
1136   \description "Same as @code{Voice} context, except that it is
1137 accommodated for typesetting a piece in Petrucci style."
1138
1139   \remove "Ligature_bracket_engraver"
1140   \consists "Mensural_ligature_engraver"
1141
1142   %% Set glyph styles.
1143   \override NoteHead.style = #'petrucci
1144   \override Rest.style = #'mensural
1145
1146   %% Thickens and shortens stems.
1147   \override Stem.thickness = #1.7
1148   \override Stem.length = #5
1149
1150   %% There are no beams in Petrucci notation.
1151   autoBeaming = ##f
1152 }
1153
1154 \context {
1155   \Staff
1156   \name "PetrucciStaff"
1157   \alias "Staff"
1158   \denies "Voice"
1159   \defaultchild "PetrucciVoice"
1160   \accepts "PetrucciVoice"
1161   \description "Same as @code{Staff} context, except that it is
1162 accommodated for typesetting a piece in Petrucci style."
1163
1164   \consists "Custos_engraver"
1165
1166   \override StaffSymbol.thickness = #1.3
1167
1168   %% Choose Petrucci g clef on 2nd line as default.
1169   clefGlyph = #"clefs.petrucci.g"
1170   middleCClefPosition = #-6
1171   middleCPosition = #-6
1172   clefPosition = #-2
1173   clefTransposition = #0
1174
1175   \override Custos.style = #'mensural
1176   \override Custos.neutral-position = #3
1177   \override Custos.neutral-direction = #DOWN
1178
1179   %% Accidentals are valid only once (if the following note is different)
1180   extraNatural = ##f
1181   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1182                              ,neo-modern-accidental-rule)
1183   autoCautionaries = #'()
1184   printKeyCancellation = ##f
1185 }
1186
1187 \context {
1188   \Voice
1189   \name "KievanVoice"
1190   \alias "Voice"
1191   \description "Same as @code{Voice} context, except that it is
1192 accommodated for typesetting a piece in Kievan style."
1193
1194   \remove "Ligature_bracket_engraver"
1195   \consists "Kievan_ligature_engraver"
1196
1197   %% Set glyph styles.
1198   \override NoteHead.style = #'kievan
1199   \override Stem.X-offset = #stem::kievan-offset-callback
1200   \override Stem.stencil = ##f
1201   \override Flag.stencil = ##f
1202   \override Rest.style = #'mensural
1203   \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
1204   \override Dots.style = #'kievan
1205   \override Slur.stencil = ##f
1206   \override Stem.length = #0.0
1207   \override Beam.positions = #beam::get-kievan-positions
1208   \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
1209   \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
1210
1211   %% There are beams in Kievan notation, but they are invoked manually
1212   autoBeaming = ##f
1213 }
1214
1215 \context {
1216   \Staff
1217   \name "KievanStaff"
1218   \alias "Staff"
1219   \denies "Voice"
1220   \defaultchild "KievanVoice"
1221   \accepts "KievanVoice"
1222   \description "Same as @code{Staff} context, except that it is
1223 accommodated for typesetting a piece in Kievan style."
1224
1225   \remove "Time_signature_engraver"
1226
1227   %% Choose Kievan tsefaut clef
1228   clefGlyph = #"clefs.kievan.do"
1229   middleCClefPosition = #0
1230   middleCPosition = #0
1231   clefPosition = #0
1232   clefTransposition = #0
1233
1234   %% Accidentals are valid only once (if the following note is different)
1235   extraNatural = ##f
1236   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1237                              ,neo-modern-accidental-rule)
1238   autoCautionaries = #'()
1239   printKeyCancellation = ##f
1240
1241 }
1242
1243 %% Keep the old definitions in here for compatibility (they erase previous
1244 %% settings to the corresponding context!).
1245 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1246 %% into the desired context. That's just as easy, requires only one line more
1247 %% (the \*Staff), but preserves previous context mods.
1248 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1249 RemoveEmptyStaffContext = \context {
1250   \Staff
1251   \RemoveEmptyStaves
1252 }
1253
1254 AncientRemoveEmptyStaffContext = \context {
1255   \VaticanaStaff
1256   \RemoveEmptyStaves
1257 }
1258
1259 RemoveEmptyDrumStaffContext = \context {
1260   \DrumStaff
1261   \RemoveEmptyStaves
1262 }
1263
1264 RemoveEmptyRhythmicStaffContext = \context {
1265   \RhythmicStaff
1266   \RemoveEmptyStaves
1267 }
1268
1269 RemoveEmptyTabStaffContext = \context {
1270   \TabStaff
1271   \RemoveEmptyStaves
1272 }