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