]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
NullVoice: not accepted directly by Score; issue 4302
[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 "PetrucciStaff"
582   \accepts "PianoStaff"
583   \accepts "RhythmicStaff"
584   \accepts "Staff"
585   \accepts "StaffGroup"
586   \accepts "TabStaff"
587   \accepts "VaticanaStaff"
588
589   noteToFretFunction = #determine-frets
590   predefinedDiagramTable = ##f
591   soloText = #"Solo"
592   soloIIText = #"Solo II"
593   aDueText = #"a2"
594   printPartCombineTexts = ##t
595   partCombineTextsOnNote = ##t
596   systemStartDelimiter =#'SystemStartBar
597
598   drumStyleTable = #drums-style
599
600   associatedVoiceType = #'Voice
601   melismaBusyProperties = #default-melisma-properties
602   tieWaitForNote = ##f
603   clefGlyph = #"clefs.G"
604   clefPosition = #-2
605   middleCClefPosition = #-6
606   middleCPosition = #-6
607   firstClef = ##t
608
609   crescendoSpanner = #'hairpin
610   decrescendoSpanner = #'hairpin
611
612   defaultBarType = #"|"
613   doubleRepeatType = #":..:"
614   startRepeatType = #".|:"
615   endRepeatType = #":|."
616   alternativeRestores = #'(measurePosition measureLength lastChord)
617   barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers
618   barNumberFormatter = #robust-bar-number-function
619   clefTranspositionFormatter = #clef-transposition-markup
620   cueClefTranspositionFormatter = #clef-transposition-markup
621   automaticBars = ##t
622
623   explicitClefVisibility = #all-visible
624   explicitCueClefVisibility = #end-of-line-invisible
625   explicitKeySignatureVisibility = #all-visible
626   initialTimeSignatureVisibility = #end-of-line-invisible
627
628   repeatCountVisibility = #all-repeat-counts-visible
629
630   %% Other Timing variables are derived and set by the Timing_translator
631   %% at initialization time by calling the functions in
632   %% scm/time-signature-settings.scm
633
634   timeSignatureSettings = #default-time-signature-settings
635   timeSignatureFraction = 4/4
636
637   beamHalfMeasure = ##t
638
639   autoBeaming = ##t
640   autoBeamCheck = #default-auto-beam-check
641
642   completionFactor = #unity-if-multimeasure
643
644   scriptDefinitions = #default-script-alist
645
646   pedalSustainStrings = #'("Ped." "*Ped." "*")
647   pedalSustainStyle = #'text
648   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
649   pedalUnaCordaStyle = #'text
650
651   %% These are in ordinary italic font, including the *,
652   %% but they are unlikely to be used,
653   %% as the default pedal-style for SostenutoPedal is 'mixed':
654   %% i.e.  Sost. Ped_____________________
655   pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
656   pedalSostenutoStyle = #'mixed
657
658   harmonicAccidentals = ##t
659   fingeringOrientations = #'(up down)
660   stringNumberOrientations = #'(up down)
661   strokeFingerOrientations = #'(right)
662
663   lyricMelismaAlignment = #LEFT
664   markFormatter = #format-mark-letters
665   rehearsalMark = #1
666   subdivideBeams = ##f
667   extraNatural = ##t
668   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
669   autoCautionaries = #'()
670
671   printKeyCancellation = ##t
672   keyAlterationOrder = #`(
673     (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
674     (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
675     (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
676     (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
677   )
678
679   barCheckSynchronize = ##f
680
681   %% chord names:
682   chordNameFunction = #ignatzek-chord-names
683   minorChordModifier = #(make-simple-markup "m")
684   additionalPitchPrefix = #"" % was "add"
685   majorSevenSymbol = #whiteTriangleMarkup
686   chordNameLowercaseMinor = ##f
687   chordNameSeparator = #(make-hspace-markup 0.5)
688   slashChordSeparator = #(make-simple-markup "/")
689   chordNameExceptions = #ignatzekExceptions
690   chordNoteNamer = #'()
691   chordRootNamer = #note-name->markup
692   chordPrefixSpacer = #0
693   chordNameExceptionsFull = #fullJazzExceptions
694   chordNameExceptionsPartial = #partialJazzExceptions
695   noChordSymbol = #(make-simple-markup "N.C.")
696
697   bassStaffProperties = #'((assign clefGlyph "clefs.F")
698   (assign clefPosition 2)
699   (assign middleCPosition 6)
700   (assign middleCClefPosition 6))
701   %% tablature:
702   stringOneTopmost = ##t
703   highStringOne = ##t
704
705   %% One may change the string tunings as follows :
706   %% The length of the list must be equal to the number of strings
707   stringTunings = #guitar-tuning
708   tablatureFormat = #fret-number-tablature-format
709   tabStaffLineLayoutFunction = #tablature-position-on-lines
710
711 %%
712   figuredBassFormatter = #format-bass-figure
713   metronomeMarkFormatter = #format-metronome-markup
714
715   %% See also make-voice-props-set
716   graceSettings = #score-grace-settings
717
718   keepAliveInterfaces = #'(
719     bass-figure-interface
720     chord-name-interface
721     cluster-beacon-interface
722     fret-diagram-interface
723     lyric-syllable-interface
724     note-head-interface
725     tab-note-head-interface
726     lyric-interface
727     percent-repeat-item-interface
728     percent-repeat-interface
729
730     ;; need this, as stanza numbers are items, and appear only once.
731     stanza-number-interface
732   )
733   %% \quoteDuring is supposed to quote everything, cueDuring only the essentials
734   quotedEventTypes = #'(StreamEvent)
735   quotedCueEventTypes = #'(
736     note-event
737     rest-event
738     tie-event
739     beam-event
740     tuplet-span-event)
741   instrumentTransposition = #(ly:make-pitch 0 0 0)
742
743   topLevelAlignment = ##t
744
745   timing = ##t
746 }
747
748
749
750
751 \context {
752   \type "Engraver_group"
753   \name "FiguredBass"
754   \description "A context for printing a figured bass line."
755
756   \consists "Figured_bass_engraver"
757   \consists "Separating_line_group_engraver"
758   \consists "Axis_group_engraver"
759
760   \override VerticalAxisGroup.remove-empty = ##t
761   \override VerticalAxisGroup.remove-first = ##t
762   \override VerticalAxisGroup.staff-affinity = #UP
763   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
764   \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
765 }
766
767 \context {
768   \name "Devnull"
769   \type "Engraver_group"
770
771   %% don't want to route anything out of here:
772   \alias "Staff"
773   \alias "Voice"
774   \description "Silently discards all musical information given to this
775 context."
776 }
777
778 \context {
779   \name "NullVoice"
780   \type "Engraver_group"
781   \description "For aligning lyrics without printing notes"
782
783   %% don't route anything out of here
784   \alias "Staff"
785   \alias "Voice"
786
787   %% provide non-printing NoteHeads with proper extents for lyric alignment
788   \consists "Note_heads_engraver"
789   \omit NoteHead
790   \override NoteHead.X-extent = #(lambda (g)
791     (ly:stencil-extent (ly:note-head::print g) X))
792
793   %% generate no accidentals
794   nullAccidentals = ##t
795
796   %% keep noteheads inside the staff
797   \consists "Pitch_squash_engraver"
798   squashedPosition = 0
799
800   %% the engravers that control the 'busy' flags for note-onsets and melismata
801   \consists "Grob_pq_engraver"
802   \consists "Tie_engraver"
803   \omit Tie
804   \consists "Beam_engraver"
805   \omit Beam
806   \consists "Slur_engraver"
807   \omit Slur
808 }
809
810 \context {
811   \Voice
812   \name "TabVoice"
813   \alias "Voice"
814   \consists "Tab_note_heads_engraver"
815   \consists "Tab_tie_follow_engraver"
816
817   \remove "Note_heads_engraver"
818   \remove "Fingering_engraver"
819   \remove "New_fingering_engraver"
820   \remove "Pitched_trill_engraver"
821
822   \description "Context for drawing notes in a Tab staff."
823
824   %% No accidental in tablature !
825   \remove "Accidental_engraver"
826 }
827
828 \context {
829   \Staff
830   \alias "Staff"
831   \name "TabStaff"
832   \denies "Voice"
833   \consists "Tab_staff_symbol_engraver"
834
835   \description "Context for generating tablature. It accepts only @code{TabVoice}
836 contexts and handles the line spacing, the tablature clef etc. properly."
837
838   \accepts "TabVoice"
839   \defaultchild "TabVoice"
840
841   %% 6 strings, bigger spacing
842   \override StaffSymbol.staff-space = #1.5
843
844   %% Don't draw stems over the tablature figures !
845   \override Stem.avoid-note-head = ##t
846
847   %% No accidental in tablature !
848   \remove "Accidental_engraver"
849   \remove "Key_engraver"
850
851   \remove "Ottava_spanner_engraver"
852   %% the clef handler
853   \override Clef.stencil = #clef::print-modern-tab-if-set
854   %% no time signature
855   \override TimeSignature.stencil = ##f
856   %% no arpeggios
857   \override Arpeggio.stencil = ##f
858   %% we ignore collision warnings that may occur due to
859   %% stem overlapping, because we have no stems ;-)
860   \override NoteColumn.ignore-collision = ##t
861   %% Special "TAB" clef
862   clefGlyph = #"clefs.tab"
863   clefPosition = #0
864   %% Change string if note results in negative fret number
865   handleNegativeFrets = #'recalculate
866   %% Allow open strings even if minimumFret is set
867   restrainOpenStrings = ##f
868
869   %% TabStaff increase the staff-space, which in turn
870   %% increases beam thickness and spacing; beams are
871   %% too big. We have to adjust the beam settings:
872   \override Beam.beam-thickness = #0.32
873   \override Beam.length-fraction = #0.62
874   %% the same goes for tremolo beams
875   \override StemTremolo.beam-thickness = #0.32
876   %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
877   %% and the tablature staff space is scaled (1.5 by default),
878   %% so we use the inversion of the scale factor:
879   \override StemTremolo.length-fraction = #(lambda (grob)
880                                                (/ 1 (ly:staff-symbol-staff-space grob)))
881   \override StemTremolo.beam-width = #stem-tremolo::calc-tab-width
882
883   %% make the Stems as short as possible to minimize their influence
884   %% on the slur::calc-control-points routine
885   \override Stem.no-stem-extend = ##t
886   \override Flag.style = #'no-flag
887   \override Stem.details = #'((lengths 0 0 0 0 0 0)
888                                 (beamed-lengths 0 0 0)
889                                 (beamed-minimum-free-lengths 0 0 0)
890                                 (beamed-extreme-minimum-free-lengths 0 0)
891                                 (stem-shorten 0 0))
892   %% after all, the stubs of the stems may still be visible, so ...
893   \override Stem.stencil = ##f
894   \override Flag.stencil = ##f
895   %% automatic beams should be suppressed for similar reasons ...
896   autoBeaming = ##f
897   %% remove beams, dots and rests ...
898   \override Beam.stencil = ##f
899   \override StemTremolo.stencil = ##f
900   \override Dots.stencil = ##f
901   \override Rest.stencil = ##f
902   \override MultiMeasureRest.stencil = ##f
903   \override MultiMeasureRestNumber.stencil = ##f
904   \override MultiMeasureRestText.stencil = ##f
905   %% ... all kinds of ties/slurs
906   \override Tie.stencil = ##f
907   \override RepeatTie.stencil = ##f
908   \override LaissezVibrerTie.stencil = ##f
909   \override Slur.stencil = #slur::draw-tab-slur
910   \override PhrasingSlur.stencil = ##f
911   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
912   \override Tie.after-line-breaking = #tie::handle-tab-note-head
913   \override RepeatTie.after-line-breaking = #repeat-tie::handle-tab-note-head
914   %% ... and all kinds of markups, spanners etc.
915   \override TupletBracket.stencil = ##f
916   \override TupletNumber.stencil = ##f
917   \override DynamicText.stencil = ##f
918   \override DynamicTextSpanner.stencil = ##f
919   \override TextSpanner.stencil = ##f
920   \override Hairpin.stencil = ##f
921   \override Script.stencil = ##f
922   \override TextScript.stencil = ##f
923   \override Glissando.stencil = #glissando::draw-tab-glissando
924   %% the direction for glissando lines will be automatically corrected
925   \override Glissando.extra-dy = #glissando::calc-tab-extra-dy
926   \override Glissando.bound-details.right = #`((attach-dir . ,LEFT)
927                                                    (padding . 0.3))
928   \override Glissando.bound-details.left = #`((attach-dir . ,RIGHT)
929                                                    (padding . 0.3))
930   %% dead notes
931   \override TabNoteHead.glyph-name = #tab-note-head::calc-glyph-name
932   \override TabNoteHead.stencil = #tab-note-head::whiteout-if-style-set
933 }
934
935 \context {
936   \Voice
937   \name "VaticanaVoice"
938   \alias "Voice"
939   \description "Same as @code{Voice} context, except that it is
940 accommodated for typesetting Gregorian Chant in the notational style
941 of Editio Vaticana."
942
943   \remove "Slur_engraver"
944   \remove "Stem_engraver"
945   \remove "Ligature_bracket_engraver"
946   \consists "Vaticana_ligature_engraver"
947   \remove "Text_spanner_engraver"
948   \consists "Episema_engraver"
949
950   %% Set default head for notes outside of \[ \].
951   \override NoteHead.style = #'vaticana.punctum
952
953   %% Put some space before and after divisiones.
954   %% FIXME: This does not seem to show any effect.
955   \override Script.padding = #0.5
956
957   %% There are no beams in Gregorian Chant notation.
958   autoBeaming = ##f
959 }
960
961 \context {
962   \Staff
963   \name "VaticanaStaff"
964   \alias "Staff"
965   \denies "Voice"
966   \accepts "VaticanaVoice"
967   \defaultchild "VaticanaVoice"
968
969   \description "Same as @code{Staff} context, except that it is
970 accommodated for typesetting Gregorian Chant in the notational style
971 of Editio Vaticana."
972
973   \remove "Time_signature_engraver"
974   \consists "Custos_engraver"
975
976   %% We can not remove Bar_engraver; otherwise clefs and custodes will
977   %% not show up any more among other line breaking issues.
978   %% Instead, we make the grob transparent.
979   \override BarLine.transparent = ##t
980
981   \override StaffSymbol.line-count = #4
982   \override StaffSymbol.thickness = #0.6
983
984   %% FIXME: unit on StaffSymbol's width should be \linewidth.
985   %% \override StaffSymbol.width = #60.0
986
987   %% Choose vaticana do clef on 3rd line as default.
988   clefGlyph = #"clefs.vaticana.do"
989   middleCPosition = #1
990   middleCClefPosition = #1
991   clefPosition = #1
992   clefTransposition = #0
993
994   %% Select vaticana style font.
995   \override KeySignature.glyph-name-alist = #alteration-vaticana-glyph-name-alist
996   \override Accidental.glyph-name-alist = #alteration-vaticana-glyph-name-alist
997   \override Custos.style = #'vaticana
998   \override Custos.neutral-position = #3
999   \override Custos.neutral-direction = #DOWN
1000   \override Dots.style = #'vaticana
1001 }
1002
1003 \context {
1004   \Voice
1005   \name "GregorianTranscriptionVoice"
1006   \alias "Voice"
1007   \consists "Episema_engraver"
1008
1009   %% Removing ligature bracket engraver without replacing it by some
1010   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
1011   %% warning for every "\[" and "\]".  Therefore, we make the grob
1012   %% transparent instead.
1013   \override LigatureBracket.transparent = ##t
1014
1015   %% Put some space before and after divisiones.
1016   %% FIXME: This does not seem to show any effect.
1017   \override Script.padding = #0.5
1018
1019   %% There are no beams in Gregorian Chant notation.
1020   autoBeaming = ##f
1021 }
1022
1023 \context {
1024   \Staff
1025   \name "GregorianTranscriptionStaff"
1026   \alias "Staff"
1027   \denies "Voice"
1028   \accepts "GregorianTranscriptionVoice"
1029   \defaultchild "GregorianTranscriptionVoice"
1030
1031   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1032   %% not show up any more among other line breaking issues.
1033   %% Instead, we make the grob transparent.
1034   \override BarLine.transparent = ##t
1035 }
1036
1037 \context {
1038   \Voice
1039   \name "MensuralVoice"
1040   \alias "Voice"
1041   \description "Same as @code{Voice} context, except that it is
1042 accommodated for typesetting a piece in mensural style."
1043
1044   \remove "Slur_engraver"
1045   \remove "Ligature_bracket_engraver"
1046   \consists "Mensural_ligature_engraver"
1047
1048   %% Set default head for notes outside of \[ \].
1049   \override NoteHead.style = #'mensural
1050   \override Rest.style = #'mensural
1051   \override Flag.style = #'mensural
1052
1053   %% There are no beams in mensural notation.
1054   autoBeaming = ##f
1055 }
1056
1057 \context {
1058   \Staff
1059   \name "MensuralStaff"
1060   \alias "Staff"
1061   \denies "Voice"
1062   \defaultchild "MensuralVoice"
1063   \accepts "MensuralVoice"
1064   \description "Same as @code{Staff} context, except that it is
1065 accommodated for typesetting a piece in mensural style."
1066
1067   \consists "Custos_engraver"
1068
1069   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1070   %% not show up any more among other line breaking issues.
1071   %% Instead, we make the grob transparent.
1072   \override BarLine.transparent = ##t
1073
1074   \override StaffSymbol.thickness = #0.6
1075
1076   %% FIXME: unit on StaffSymbol's width should be \linewidth.
1077   %% \override StaffSymbol.width = #60.0
1078
1079   %% Choose mensural g clef on 2nd line as default.
1080   clefGlyph = #"clefs.mensural.g"
1081   middleCClefPosition = #-6
1082   middleCPosition = #-6
1083   clefPosition = #-2
1084   clefTransposition = #0
1085
1086   %% Select mensural style font.
1087   \override TimeSignature.style = #'mensural
1088   \override KeySignature.glyph-name-alist = #alteration-mensural-glyph-name-alist
1089   \override Accidental.glyph-name-alist = #alteration-mensural-glyph-name-alist
1090   \override Custos.style = #'mensural
1091   \override Custos.neutral-position = #3
1092   \override Custos.neutral-direction = #DOWN
1093
1094   %% Accidentals are valid only once (same as
1095   %% \accidentalStyle forget)
1096   extraNatural = ##f
1097   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1098   autoCautionaries = #'()
1099   printKeyCancellation = ##f
1100 }
1101
1102 \context {
1103   \Voice
1104   \name "PetrucciVoice"
1105   \alias "Voice"
1106   \description "Same as @code{Voice} context, except that it is
1107 accommodated for typesetting a piece in Petrucci style."
1108
1109   \remove "Ligature_bracket_engraver"
1110   \consists "Mensural_ligature_engraver"
1111
1112   %% Set glyph styles.
1113   \override NoteHead.style = #'petrucci
1114   \override Rest.style = #'mensural
1115
1116   %% Thickens and shortens stems.
1117   \override Stem.thickness = #1.7
1118   \override Stem.length = #5
1119
1120   %% There are no beams in Petrucci notation.
1121   autoBeaming = ##f
1122 }
1123
1124 \context {
1125   \Staff
1126   \name "PetrucciStaff"
1127   \alias "Staff"
1128   \denies "Voice"
1129   \defaultchild "PetrucciVoice"
1130   \accepts "PetrucciVoice"
1131   \description "Same as @code{Staff} context, except that it is
1132 accommodated for typesetting a piece in Petrucci style."
1133
1134   \consists "Custos_engraver"
1135
1136   \override StaffSymbol.thickness = #1.3
1137
1138   %% Choose Petrucci g clef on 2nd line as default.
1139   clefGlyph = #"clefs.petrucci.g"
1140   middleCClefPosition = #-6
1141   middleCPosition = #-6
1142   clefPosition = #-2
1143   clefTransposition = #0
1144
1145   \override Custos.style = #'mensural
1146   \override Custos.neutral-position = #3
1147   \override Custos.neutral-direction = #DOWN
1148
1149   %% Accidentals are valid only once (if the following note is different)
1150   extraNatural = ##f
1151   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1152                              ,neo-modern-accidental-rule)
1153   autoCautionaries = #'()
1154   printKeyCancellation = ##f
1155 }
1156
1157 \context {
1158   \Voice
1159   \name "KievanVoice"
1160   \alias "Voice"
1161   \description "Same as @code{Voice} context, except that it is
1162 accommodated for typesetting a piece in Kievan style."
1163
1164   \remove "Ligature_bracket_engraver"
1165   \consists "Kievan_ligature_engraver"
1166
1167   %% Set glyph styles.
1168   \override NoteHead.style = #'kievan
1169   \override Stem.X-offset = #stem::kievan-offset-callback
1170   \override Stem.stencil = ##f
1171   \override Flag.stencil = ##f
1172   \override Rest.style = #'mensural
1173   \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
1174   \override Dots.style = #'kievan
1175   \override Slur.stencil = ##f
1176   \override Stem.length = #0.0
1177   \override Beam.positions = #beam::get-kievan-positions
1178   \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
1179   \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
1180
1181   %% There are beams in Kievan notation, but they are invoked manually
1182   autoBeaming = ##f
1183 }
1184
1185 \context {
1186   \Staff
1187   \name "KievanStaff"
1188   \alias "Staff"
1189   \denies "Voice"
1190   \defaultchild "KievanVoice"
1191   \accepts "KievanVoice"
1192   \description "Same as @code{Staff} context, except that it is
1193 accommodated for typesetting a piece in Kievan style."
1194
1195   \remove "Time_signature_engraver"
1196
1197   %% Choose Kievan tsefaut clef
1198   clefGlyph = #"clefs.kievan.do"
1199   middleCClefPosition = #0
1200   middleCPosition = #0
1201   clefPosition = #0
1202   clefTransposition = #0
1203
1204   %% Accidentals are valid only once (if the following note is different)
1205   extraNatural = ##f
1206   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1207                              ,neo-modern-accidental-rule)
1208   autoCautionaries = #'()
1209   printKeyCancellation = ##f
1210
1211 }
1212
1213 %% Keep the old definitions in here for compatibility (they erase previous
1214 %% settings to the corresponding context!).
1215 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1216 %% into the desired context. That's just as easy, requires only one line more
1217 %% (the \*Staff), but preserves previous context mods.
1218 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1219 RemoveEmptyStaffContext = \context {
1220   \Staff
1221   \RemoveEmptyStaves
1222 }
1223
1224 AncientRemoveEmptyStaffContext = \context {
1225   \VaticanaStaff
1226   \RemoveEmptyStaves
1227 }
1228
1229 RemoveEmptyDrumStaffContext = \context {
1230   \DrumStaff
1231   \RemoveEmptyStaves
1232 }
1233
1234 RemoveEmptyRhythmicStaffContext = \context {
1235   \RhythmicStaff
1236   \RemoveEmptyStaves
1237 }
1238
1239 RemoveEmptyTabStaffContext = \context {
1240   \TabStaff
1241   \RemoveEmptyStaves
1242 }