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