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