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