]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
Doc: External.itely - Add lyluatex
[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   \override ParenthesesItem.font-size = #1.5
518 }
519
520 \context {
521   \type "Score_engraver"
522   \name "Score"
523
524   \description "This is the top level notation context.  No
525 other context can contain a @code{Score} context.  This context
526 handles the administration of time signatures.  It also makes sure
527 that items such as clefs, time signatures, and key-signatures are
528 aligned across staves.
529
530 You cannot explicitly instantiate a @code{Score} context (since it
531 is not contained in any other context).  It is instantiated
532 automatically when an output definition (a @code{\\score} or
533 @code{\\layout} block) is processed."
534
535   \consists "Paper_column_engraver"
536   \consists "Repeat_acknowledge_engraver"
537   \consists "Staff_collecting_engraver"
538
539   \alias "Timing"
540
541   %% An alias for Timing is established by the Timing_translator in
542   %% whatever context it is initialized, and the timing variables are
543   %% then copied from wherever Timing had been previously established.
544   %% The alias at Score level provides a target for initializing
545   %% Timing variables in layout definitions before any
546   %% Timing_translator has been run.
547
548   %% timing translator must come BEFORE bar number engraver
549   \consists "Timing_translator"
550   \consists "Default_bar_line_engraver"
551   \consists "Output_property_engraver"
552   \consists "Tweak_engraver"
553   \consists "System_start_delimiter_engraver"
554   \consists "Mark_engraver"
555   \consists "Volta_engraver"
556   \consists "Metronome_mark_engraver"
557   \consists "Break_align_engraver"
558   \consists "Spacing_engraver"
559   \consists "Grace_spacing_engraver"
560   \consists "Vertical_align_engraver"
561   \consists "Stanza_number_align_engraver"
562   \consists "Bar_number_engraver"
563   \consists "Parenthesis_engraver"
564   \consists "Concurrent_hairpin_engraver"
565   \consists "Beam_collision_engraver"
566   \consists "Footnote_engraver"
567
568   \defaultchild "Staff"
569
570   \accepts "ChoirStaff"
571   \accepts "ChordNames"
572   \accepts "Devnull"
573   \accepts "DrumStaff"
574   \accepts "FiguredBass"
575   \accepts "FretBoards"
576   \accepts "GrandStaff"
577   \accepts "GregorianTranscriptionStaff"
578   \accepts "KievanStaff"
579   \accepts "Lyrics"
580   \accepts "MensuralStaff"
581   \accepts "NoteNames"
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   %% tablature:
699   stringOneTopmost = ##t
700   highStringOne = ##t
701
702   %% One may change the string tunings as follows :
703   %% The length of the list must be equal to the number of strings
704   stringTunings = #guitar-tuning
705   tablatureFormat = #fret-number-tablature-format
706   tabStaffLineLayoutFunction = #tablature-position-on-lines
707
708 %%
709   figuredBassFormatter = #format-bass-figure
710   metronomeMarkFormatter = #format-metronome-markup
711
712   %% See also make-voice-props-set
713   graceSettings = #score-grace-settings
714
715   keepAliveInterfaces = #'(
716     bass-figure-interface
717     chord-name-interface
718     cluster-beacon-interface
719     fret-diagram-interface
720     lyric-syllable-interface
721     note-head-interface
722     tab-note-head-interface
723     lyric-interface
724     percent-repeat-item-interface
725     percent-repeat-interface
726
727     ;; need this, as stanza numbers are items, and appear only once.
728     stanza-number-interface
729   )
730   %% \quoteDuring is supposed to quote everything, cueDuring only the essentials
731   quotedEventTypes = #'(StreamEvent)
732   quotedCueEventTypes = #'(
733     note-event
734     rest-event
735     tie-event
736     beam-event
737     tuplet-span-event)
738   instrumentTransposition = #(ly:make-pitch 0 0 0)
739
740   topLevelAlignment = ##t
741
742   timing = ##t
743 }
744
745
746
747
748 \context {
749   \type "Engraver_group"
750   \name "FiguredBass"
751   \description "A context for printing a figured bass line."
752
753   \consists "Figured_bass_engraver"
754   \consists "Separating_line_group_engraver"
755   \consists "Axis_group_engraver"
756
757   \override VerticalAxisGroup.remove-empty = ##t
758   \override VerticalAxisGroup.remove-first = ##t
759   \override VerticalAxisGroup.staff-affinity = #UP
760   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
761   \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
762 }
763
764 \context {
765   \name "Devnull"
766   \type "Engraver_group"
767
768   %% don't want to route anything out of here:
769   \alias "Staff"
770   \alias "Voice"
771   \description "Silently discards all musical information given to this
772 context."
773 }
774
775 \context {
776   \name "NullVoice"
777   \type "Engraver_group"
778   \description "For aligning lyrics without printing notes"
779
780   %% don't route anything out of here
781   \alias "Staff"
782   \alias "Voice"
783
784   %% provide non-printing NoteHeads with proper extents for lyric alignment
785   \consists "Note_heads_engraver"
786   \omit NoteHead
787   \override NoteHead.X-extent = #(lambda (g)
788     (ly:stencil-extent (ly:note-head::print g) X))
789
790   %% generate no accidentals
791   nullAccidentals = ##t
792
793   %% keep noteheads inside the staff
794   \consists "Pitch_squash_engraver"
795   squashedPosition = 0
796
797   %% the engravers that control the 'busy' flags for note-onsets and melismata
798   \consists "Grob_pq_engraver"
799   \consists "Tie_engraver"
800   \omit Tie
801   \consists "Beam_engraver"
802   \omit Beam
803   \consists "Slur_engraver"
804   \omit Slur
805 }
806
807 \context {
808   \Voice
809   \name "TabVoice"
810   \alias "Voice"
811   \consists "Tab_note_heads_engraver"
812   \consists "Tab_tie_follow_engraver"
813
814   \remove "Note_heads_engraver"
815   \remove "Fingering_engraver"
816   \remove "New_fingering_engraver"
817   \remove "Pitched_trill_engraver"
818
819   \description "Context for drawing notes in a Tab staff."
820
821   %% No accidental in tablature !
822   \remove "Accidental_engraver"
823 }
824
825 \context {
826   \Staff
827   \alias "Staff"
828   \name "TabStaff"
829   \denies "Voice"
830   \consists "Tab_staff_symbol_engraver"
831
832   \description "Context for generating tablature. It accepts only @code{TabVoice}
833 contexts and handles the line spacing, the tablature clef etc. properly."
834
835   \accepts "TabVoice"
836   \defaultchild "TabVoice"
837
838   %% 6 strings, bigger spacing
839   \override StaffSymbol.staff-space = #1.5
840
841   %% Don't draw stems over the tablature figures !
842   \override Stem.avoid-note-head = ##t
843
844   %% No accidental in tablature !
845   \remove "Accidental_engraver"
846   \remove "Key_engraver"
847
848   \remove "Ottava_spanner_engraver"
849   %% the clef handler
850   \override Clef.stencil = #clef::print-modern-tab-if-set
851   %% no time signature
852   \override TimeSignature.stencil = ##f
853   %% no arpeggios
854   \override Arpeggio.stencil = ##f
855   %% we ignore collision warnings that may occur due to
856   %% stem overlapping, because we have no stems ;-)
857   \override NoteColumn.ignore-collision = ##t
858   %% Special "TAB" clef
859   clefGlyph = #"clefs.tab"
860   clefPosition = #0
861   %% Change string if note results in negative fret number
862   handleNegativeFrets = #'recalculate
863   %% Allow open strings even if minimumFret is set
864   restrainOpenStrings = ##f
865
866   %% TabStaff increase the staff-space, which in turn
867   %% increases beam thickness and spacing; beams are
868   %% too big. We have to adjust the beam settings:
869   \override Beam.beam-thickness = #0.32
870   \override Beam.length-fraction = #0.62
871   %% the same goes for tremolo beams
872   \override StemTremolo.beam-thickness = #0.32
873   %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
874   %% and the tablature staff space is scaled (1.5 by default),
875   %% so we use the inversion of the scale factor:
876   \override StemTremolo.length-fraction = #(lambda (grob)
877                                                (/ 1 (ly:staff-symbol-staff-space grob)))
878   \override StemTremolo.beam-width = #stem-tremolo::calc-tab-width
879
880   %% make the Stems as short as possible to minimize their influence
881   %% on the slur::calc-control-points routine
882   \override Stem.no-stem-extend = ##t
883   \override Flag.style = #'no-flag
884   \override Stem.details = #'((lengths 0 0 0 0 0 0)
885                                 (beamed-lengths 0 0 0)
886                                 (beamed-minimum-free-lengths 0 0 0)
887                                 (beamed-extreme-minimum-free-lengths 0 0)
888                                 (stem-shorten 0 0))
889   %% after all, the stubs of the stems may still be visible, so ...
890   \override Stem.stencil = ##f
891   \override Flag.stencil = ##f
892   %% automatic beams should be suppressed for similar reasons ...
893   autoBeaming = ##f
894   %% remove beams, dots and rests ...
895   \override Beam.stencil = ##f
896   \override StemTremolo.stencil = ##f
897   \override Dots.stencil = ##f
898   \override Rest.stencil = ##f
899   \override MultiMeasureRest.stencil = ##f
900   \override MultiMeasureRestNumber.stencil = ##f
901   \override MultiMeasureRestText.stencil = ##f
902   %% ... all kinds of ties/slurs
903   \override Tie.stencil = ##f
904   \override RepeatTie.stencil = ##f
905   \override LaissezVibrerTie.stencil = ##f
906   \override Slur.stencil = #slur::draw-tab-slur
907   \override PhrasingSlur.stencil = ##f
908   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
909   \override Tie.after-line-breaking = #tie::handle-tab-note-head
910   \override RepeatTie.after-line-breaking = #repeat-tie::handle-tab-note-head
911   %% ... and all kinds of markups, spanners etc.
912   \override TupletBracket.stencil = ##f
913   \override TupletNumber.stencil = ##f
914   \override DynamicText.stencil = ##f
915   \override DynamicTextSpanner.stencil = ##f
916   \override TextSpanner.stencil = ##f
917   \override Hairpin.stencil = ##f
918   \override Script.stencil = ##f
919   \override TextScript.stencil = ##f
920   \override Glissando.stencil = #glissando::draw-tab-glissando
921   %% the direction for glissando lines will be automatically corrected
922   \override Glissando.extra-dy = #glissando::calc-tab-extra-dy
923   \override Glissando.bound-details.right = #`((attach-dir . ,LEFT)
924                                                    (padding . 0.3))
925   \override Glissando.bound-details.left = #`((attach-dir . ,RIGHT)
926                                                    (padding . 0.3))
927   %% dead notes
928   \override TabNoteHead.glyph-name = #tab-note-head::calc-glyph-name
929   \override TabNoteHead.stencil = #tab-note-head::whiteout-if-style-set
930 }
931
932 \context {
933   \Voice
934   \name "VaticanaVoice"
935   \alias "Voice"
936   \description "Same as @code{Voice} context, except that it is
937 accommodated for typesetting Gregorian Chant in the notational style
938 of Editio Vaticana."
939
940   \remove "Slur_engraver"
941   \remove "Stem_engraver"
942   \remove "Ligature_bracket_engraver"
943   \consists "Vaticana_ligature_engraver"
944   \remove "Text_spanner_engraver"
945   \consists "Episema_engraver"
946
947   %% Set default head for notes outside of \[ \].
948   \override NoteHead.style = #'vaticana.punctum
949
950   %% Put some space before and after divisiones.
951   %% FIXME: This does not seem to show any effect.
952   \override Script.padding = #0.5
953
954   %% There are no beams in Gregorian Chant notation.
955   autoBeaming = ##f
956 }
957
958 \context {
959   \Staff
960   \name "VaticanaStaff"
961   \alias "Staff"
962   \denies "Voice"
963   \accepts "VaticanaVoice"
964   \defaultchild "VaticanaVoice"
965
966   \description "Same as @code{Staff} context, except that it is
967 accommodated for typesetting Gregorian Chant in the notational style
968 of Editio Vaticana."
969
970   \remove "Time_signature_engraver"
971   \consists "Custos_engraver"
972
973   %% We can not remove Bar_engraver; otherwise clefs and custodes will
974   %% not show up any more among other line breaking issues.
975   %% Instead, we make the grob transparent.
976   \override BarLine.transparent = ##t
977
978   \override StaffSymbol.line-count = #4
979   \override StaffSymbol.thickness = #0.6
980
981   %% FIXME: unit on StaffSymbol's width should be \linewidth.
982   %% \override StaffSymbol.width = #60.0
983
984   %% Choose vaticana do clef on 3rd line as default.
985   clefGlyph = #"clefs.vaticana.do"
986   middleCPosition = #1
987   middleCClefPosition = #1
988   clefPosition = #1
989   clefTransposition = #0
990
991   %% Select vaticana style font.
992   \override KeySignature.glyph-name-alist = #alteration-vaticana-glyph-name-alist
993   \override Accidental.glyph-name-alist = #alteration-vaticana-glyph-name-alist
994   \override Custos.style = #'vaticana
995   \override Custos.neutral-position = #3
996   \override Custos.neutral-direction = #DOWN
997   \override Dots.style = #'vaticana
998 }
999
1000 \context {
1001   \Voice
1002   \name "GregorianTranscriptionVoice"
1003   \alias "Voice"
1004   \consists "Episema_engraver"
1005
1006   %% Removing ligature bracket engraver without replacing it by some
1007   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
1008   %% warning for every "\[" and "\]".  Therefore, we make the grob
1009   %% transparent instead.
1010   \override LigatureBracket.transparent = ##t
1011
1012   %% Put some space before and after divisiones.
1013   %% FIXME: This does not seem to show any effect.
1014   \override Script.padding = #0.5
1015
1016   %% There are no beams in Gregorian Chant notation.
1017   autoBeaming = ##f
1018 }
1019
1020 \context {
1021   \Staff
1022   \name "GregorianTranscriptionStaff"
1023   \alias "Staff"
1024   \denies "Voice"
1025   \accepts "GregorianTranscriptionVoice"
1026   \defaultchild "GregorianTranscriptionVoice"
1027
1028   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1029   %% not show up any more among other line breaking issues.
1030   %% Instead, we make the grob transparent.
1031   \override BarLine.transparent = ##t
1032 }
1033
1034 \context {
1035   \Voice
1036   \name "MensuralVoice"
1037   \alias "Voice"
1038   \description "Same as @code{Voice} context, except that it is
1039 accommodated for typesetting a piece in mensural style."
1040
1041   \remove "Slur_engraver"
1042   \remove "Ligature_bracket_engraver"
1043   \consists "Mensural_ligature_engraver"
1044
1045   %% Set default head for notes outside of \[ \].
1046   \override NoteHead.style = #'mensural
1047   \override Rest.style = #'mensural
1048   \override Flag.style = #'mensural
1049
1050   %% There are no beams in mensural notation.
1051   autoBeaming = ##f
1052 }
1053
1054 \context {
1055   \Staff
1056   \name "MensuralStaff"
1057   \alias "Staff"
1058   \denies "Voice"
1059   \defaultchild "MensuralVoice"
1060   \accepts "MensuralVoice"
1061   \description "Same as @code{Staff} context, except that it is
1062 accommodated for typesetting a piece in mensural style."
1063
1064   \consists "Custos_engraver"
1065
1066   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1067   %% not show up any more among other line breaking issues.
1068   %% Instead, we make the grob transparent.
1069   \override BarLine.transparent = ##t
1070
1071   \override StaffSymbol.thickness = #0.6
1072
1073   %% FIXME: unit on StaffSymbol's width should be \linewidth.
1074   %% \override StaffSymbol.width = #60.0
1075
1076   %% Choose mensural g clef on 2nd line as default.
1077   clefGlyph = #"clefs.mensural.g"
1078   middleCClefPosition = #-6
1079   middleCPosition = #-6
1080   clefPosition = #-2
1081   clefTransposition = #0
1082
1083   %% Select mensural style font.
1084   \override TimeSignature.style = #'mensural
1085   \override KeySignature.glyph-name-alist = #alteration-mensural-glyph-name-alist
1086   \override Accidental.glyph-name-alist = #alteration-mensural-glyph-name-alist
1087   \override Custos.style = #'mensural
1088   \override Custos.neutral-position = #3
1089   \override Custos.neutral-direction = #DOWN
1090
1091   %% Accidentals are valid only once (same as
1092   %% \accidentalStyle forget)
1093   extraNatural = ##f
1094   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1095   autoCautionaries = #'()
1096   printKeyCancellation = ##f
1097 }
1098
1099 \context {
1100   \Voice
1101   \name "PetrucciVoice"
1102   \alias "Voice"
1103   \description "Same as @code{Voice} context, except that it is
1104 accommodated for typesetting a piece in Petrucci style."
1105
1106   \remove "Ligature_bracket_engraver"
1107   \consists "Mensural_ligature_engraver"
1108
1109   %% Set glyph styles.
1110   \override NoteHead.style = #'petrucci
1111   \override Rest.style = #'mensural
1112
1113   %% Thickens and shortens stems.
1114   \override Stem.thickness = #1.7
1115   \override Stem.length = #5
1116
1117   %% There are no beams in Petrucci notation.
1118   autoBeaming = ##f
1119 }
1120
1121 \context {
1122   \Staff
1123   \name "PetrucciStaff"
1124   \alias "Staff"
1125   \denies "Voice"
1126   \defaultchild "PetrucciVoice"
1127   \accepts "PetrucciVoice"
1128   \description "Same as @code{Staff} context, except that it is
1129 accommodated for typesetting a piece in Petrucci style."
1130
1131   \consists "Custos_engraver"
1132
1133   \override StaffSymbol.thickness = #1.3
1134
1135   %% Choose Petrucci g clef on 2nd line as default.
1136   clefGlyph = #"clefs.petrucci.g"
1137   middleCClefPosition = #-6
1138   middleCPosition = #-6
1139   clefPosition = #-2
1140   clefTransposition = #0
1141
1142   \override Custos.style = #'mensural
1143   \override Custos.neutral-position = #3
1144   \override Custos.neutral-direction = #DOWN
1145
1146   %% Accidentals are valid only once (if the following note is different)
1147   extraNatural = ##f
1148   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1149                              ,neo-modern-accidental-rule)
1150   autoCautionaries = #'()
1151   printKeyCancellation = ##f
1152 }
1153
1154 \context {
1155   \Voice
1156   \name "KievanVoice"
1157   \alias "Voice"
1158   \description "Same as @code{Voice} context, except that it is
1159 accommodated for typesetting a piece in Kievan style."
1160
1161   \remove "Ligature_bracket_engraver"
1162   \consists "Kievan_ligature_engraver"
1163
1164   %% Set glyph styles.
1165   \override NoteHead.style = #'kievan
1166   \override Stem.X-offset = #stem::kievan-offset-callback
1167   \override Stem.stencil = ##f
1168   \override Flag.stencil = ##f
1169   \override Rest.style = #'mensural
1170   \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
1171   \override Dots.style = #'kievan
1172   \override Slur.stencil = ##f
1173   \override Stem.length = #0.0
1174   \override Beam.positions = #beam::get-kievan-positions
1175   \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
1176   \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
1177
1178   %% There are beams in Kievan notation, but they are invoked manually
1179   autoBeaming = ##f
1180 }
1181
1182 \context {
1183   \Staff
1184   \name "KievanStaff"
1185   \alias "Staff"
1186   \denies "Voice"
1187   \defaultchild "KievanVoice"
1188   \accepts "KievanVoice"
1189   \description "Same as @code{Staff} context, except that it is
1190 accommodated for typesetting a piece in Kievan style."
1191
1192   \remove "Time_signature_engraver"
1193
1194   %% Choose Kievan tsefaut clef
1195   clefGlyph = #"clefs.kievan.do"
1196   middleCClefPosition = #0
1197   middleCPosition = #0
1198   clefPosition = #0
1199   clefTransposition = #0
1200
1201   %% Accidentals are valid only once (if the following note is different)
1202   extraNatural = ##f
1203   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1204                              ,neo-modern-accidental-rule)
1205   autoCautionaries = #'()
1206   printKeyCancellation = ##f
1207
1208 }
1209
1210 %% Keep the old definitions in here for compatibility (they erase previous
1211 %% settings to the corresponding context!).
1212 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1213 %% into the desired context. That's just as easy, requires only one line more
1214 %% (the \*Staff), but preserves previous context mods.
1215 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1216 RemoveEmptyStaffContext = \context {
1217   \Staff
1218   \RemoveEmptyStaves
1219 }
1220
1221 AncientRemoveEmptyStaffContext = \context {
1222   \VaticanaStaff
1223   \RemoveEmptyStaves
1224 }
1225
1226 RemoveEmptyDrumStaffContext = \context {
1227   \DrumStaff
1228   \RemoveEmptyStaves
1229 }
1230
1231 RemoveEmptyRhythmicStaffContext = \context {
1232   \RhythmicStaff
1233   \RemoveEmptyStaves
1234 }
1235
1236 RemoveEmptyTabStaffContext = \context {
1237   \TabStaff
1238   \RemoveEmptyStaves
1239 }