]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
Issue 3087: typo "abChordRepeats" in NR
[lilypond.git] / ly / engraver-init.ly
1 %%%% This file is part of LilyPond, the GNU music typesetter.
2 %%%%
3 %%%% Copyright (C) 1996--2012 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.6"
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   EventClasses = #all-event-classes
30 }
31
32 \context {
33   \type "Engraver_group"
34   \name "FretBoards"
35   \alias "Staff"
36   \description "A context for displaying fret diagrams."
37
38   \consists "Fretboard_engraver"
39   \consists "Output_property_engraver"
40   \consists "Hara_kiri_engraver"
41   \consists "Separating_line_group_engraver"
42   \consists "Font_size_engraver"
43   \consists "Instrument_name_engraver"
44
45   %% explicitly set instrument, so it is not inherited from the parent
46   instrumentName = #'()
47   shortInstrumentName = #'()
48
49   predefinedDiagramTable = #default-fret-table
50   handleNegativeFrets = #'recalculate
51   restrainOpenStrings = ##f
52 }
53
54 \context {
55   \type "Engraver_group"
56   \name "Staff"
57
58   \consists "Output_property_engraver"
59   \consists "Bar_engraver"
60   \consists "Pure_from_neighbor_engraver"
61   %% Bar_engraver must be first so default bars aren't overwritten
62   %% with empty ones.
63
64   \consists "Font_size_engraver"
65   \consists "Separating_line_group_engraver"
66   \consists "Dot_column_engraver"
67   \consists "Staff_collecting_engraver"
68
69  %% perhaps move to Voice context?
70   \consists "Ottava_spanner_engraver"
71   \consists "Clef_engraver"
72   \consists "Key_engraver"
73   \consists "Time_signature_engraver"
74   \consists "Ledger_line_engraver"
75   \consists "Staff_symbol_engraver"
76   \consists "Collision_engraver"
77   \consists "Grob_pq_engraver"
78   \consists "Rest_collision_engraver"
79   \consists "Accidental_engraver"
80   \consists "Piano_pedal_engraver"
81   \consists "Piano_pedal_align_engraver"
82   \consists "Instrument_name_engraver"
83   \consists "Axis_group_engraver"
84   \consists "Figured_bass_engraver"
85   \consists "Figured_bass_position_engraver"
86   \consists "Script_row_engraver"
87   \consists "Cue_clef_engraver"
88
89   localKeySignature = #'()
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   localKeySignature = #'()
165   createSpacing = ##t
166
167   squashedPosition = #0
168   \name RhythmicStaff
169   \alias "Staff"
170
171   \override BarLine.bar-extent = #'(-2 . 2)
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 "Voice"
195   \accepts "CueVoice"
196   \defaultchild "Voice"
197
198   \description "A context like @code{Staff} but for printing rhythms.
199 Pitches are ignored; the notes are printed on one line."
200 }
201
202
203 \context {
204   \type "Engraver_group"
205   \name "Voice"
206
207   \description "Corresponds to a voice on a staff.  This context
208 handles the conversion of dynamic signs, stems, beams, super- and
209 subscripts, slurs, ties, and rests.
210
211 You have to instantiate this explicitly if you want to have
212 multiple voices on the same staff."
213
214   \consists "Font_size_engraver"
215
216   \consists "Pitched_trill_engraver"
217   \consists "Output_property_engraver"
218   \consists "Arpeggio_engraver"
219   \consists "Multi_measure_rest_engraver"
220   \consists "Text_spanner_engraver"
221   \consists "Trill_spanner_engraver"
222   \consists "Grob_pq_engraver"
223   \consists "Forbid_line_break_engraver"
224   \consists "Laissez_vibrer_engraver"
225   \consists "Repeat_tie_engraver"
226   \consists "Note_head_line_engraver"
227   \consists "Glissando_engraver"
228   \consists "Ligature_bracket_engraver"
229   \consists "Breathing_sign_engraver"
230   \consists "Note_heads_engraver"
231   \consists "Dots_engraver"
232   \consists "Rest_engraver"
233   \consists "Tweak_engraver"
234
235   %% switch on to make stem directions interpolate for the
236   %% center line.
237   %  \consists "Melody_engraver"
238
239   \consists "Stem_engraver"
240   \consists "Beam_engraver"
241   \consists "Grace_beam_engraver"
242   \consists "Auto_beam_engraver"
243
244   %% must come before Script_column_engraver.
245   \consists "New_fingering_engraver"
246
247   \consists "Chord_tremolo_engraver"
248   \consists "Double_percent_repeat_engraver"
249   \consists "Percent_repeat_engraver"
250   \consists "Slash_repeat_engraver"
251   \consists "Part_combine_engraver"
252
253   \consists "Text_engraver"
254   \consists "New_dynamic_engraver"
255   \consists "Dynamic_align_engraver"
256 %  \consists "Dynamic_engraver"
257   \consists "Fingering_engraver"
258   \consists "Bend_engraver"
259
260   \consists "Script_engraver"
261   \consists "Script_column_engraver"
262   \consists "Fingering_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 "Grace_engraver"
272   \consists "Instrument_switch_engraver"
273 }
274
275 \context{
276   \Voice
277
278   \name CueVoice
279   \alias Voice
280   fontSize = #-4
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   localKeySignature = #'()
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   \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   \consists "Span_bar_stub_engraver"
365   \consists "Span_arpeggio_engraver"
366   \consists "Output_property_engraver"
367   systemStartDelimiter = #'SystemStartBracket
368   %% explicitly set instrument, so it is not inherited from the parent
369   instrumentName = #'()
370   shortInstrumentName = #'()
371
372   \consists "System_start_delimiter_engraver"
373
374   \defaultchild "Staff"
375   \accepts "Staff"
376   \accepts "RhythmicStaff"
377   \accepts "DrumStaff"
378   \accepts "GrandStaff"
379   \accepts "PianoStaff"
380   \accepts "TabStaff"
381   \accepts "Lyrics"
382   \accepts "ChordNames"
383   \accepts "FiguredBass"
384   \accepts "ChoirStaff"
385   \accepts "StaffGroup"
386
387   \description "Groups staves while adding a bracket on the left
388 side, grouping the staves together.  The bar lines of the contained
389 staves are connected vertically.  @code{StaffGroup} only consists of
390 a collection of staves, with a bracket in front and spanning bar lines."
391 }
392
393 \context {
394   \type "Engraver_group"
395   \name Dynamics
396   \alias Voice
397   \consists "Output_property_engraver"
398   \consists "Bar_engraver"
399   \consists "Piano_pedal_engraver"
400   \consists "Script_engraver"
401   \consists "New_dynamic_engraver"
402   \consists "Dynamic_align_engraver"
403   \consists "Text_engraver"
404   \consists "Text_spanner_engraver"
405   \consists "Font_size_engraver"
406   \consists "Axis_group_engraver"
407   \consists "Tweak_engraver"
408
409   pedalSustainStrings = #'("Ped." "*Ped." "*")
410   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
411   \override VerticalAxisGroup.staff-affinity = #CENTER
412   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
413     #'((basic-distance . 5)
414        (padding . 0.5))
415   \override TextScript.font-shape = #'italic
416   \override DynamicLineSpanner.Y-offset = #0
417   \override DynamicText.X-offset =
418   #(ly:make-simple-closure
419     `(,+
420       ,(ly:make-simple-closure
421          (list ly:self-alignment-interface::centered-on-note-columns))
422       ,(ly:make-simple-closure
423         (list ly:self-alignment-interface::x-aligned-on-self))))
424
425   \description "Holds a single line of dynamics, which will be
426 centered between the staves surrounding this context."
427 }
428
429
430 \context{
431   \type "Engraver_group"
432
433   \description "Corresponds to a voice with lyrics.  Handles the
434 printing of a single line of lyrics."
435
436   \name "Lyrics"
437   \consists "Lyric_engraver"
438   \consists "Extender_engraver"
439   \consists "Hyphen_engraver"
440   \consists "Tweak_engraver"
441   \consists "Stanza_number_engraver"
442   \consists "Instrument_name_engraver"
443   \consists "Font_size_engraver"
444   \consists "Hara_kiri_engraver"
445   \consists "Pure_from_neighbor_engraver"
446   searchForVoice = ##f
447   %% explicitly set instrument, so it is not inherited from the parent
448   instrumentName = #'()
449   shortInstrumentName = #'()
450
451   \override VerticalAxisGroup.remove-first = ##t
452   \override VerticalAxisGroup.remove-empty = ##t
453   \override VerticalAxisGroup.staff-affinity = #UP
454   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
455     #'((basic-distance . 5.5)
456        (padding . 0.5)
457        (stretchability . 1))
458   \override VerticalAxisGroup.nonstaff-nonstaff-spacing =
459      #'((basic-distance . 0)
460         (minimum-distance . 2.8)
461         (padding . 0.2)
462         (stretchability . 0))
463   \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing.padding = #1.5
464   \override InstrumentName.self-alignment-Y = ##f
465
466   %% sync with define-grobs.scm ;
467   \override InstrumentName.font-size = #1.0
468
469   %% make sure that barlines aren't collapsed, when
470   %% Bar_engraver is there.
471   \override BarLine.bar-extent = #'(-0.05 . 0.05)
472
473 }
474
475 \context {
476   \type "Engraver_group"
477   \name NoteNames
478   \description "A context for printing the names of notes."
479   \consists "Axis_group_engraver"
480
481   \override VerticalAxisGroup.staff-affinity = #UP
482   \override VerticalAxisGroup.nonstaff-nonstaff-spacing =
483     #'((basic-distance . 0)
484        (minimum-distance . 2.8)
485        (padding . 0.2)
486        (stretchability . 0))
487   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
488     #'((basic-distance . 5.5)
489        (padding . 0.5)
490        (stretchability . 1))
491   \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing.padding = 1.5
492
493   \consists "Tie_engraver"
494   \consists "Note_name_engraver"
495   \consists "Separating_line_group_engraver"
496 }
497
498 \context {
499   \type "Engraver_group"
500   \name ChordNames
501   \description "Typesets chord names."
502
503   \consists "Output_property_engraver"
504   \consists "Separating_line_group_engraver"
505   \consists "Chord_name_engraver"
506   \consists "Hara_kiri_engraver"
507 %  \consists "Note_spacing_engraver"
508   \override VerticalAxisGroup.remove-first = ##t
509   \override VerticalAxisGroup.remove-empty = ##t
510   \override VerticalAxisGroup.staff-affinity = #DOWN
511   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
512   \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
513 }
514
515 \context {
516   \type "Score_engraver"
517   \name "Score"
518
519   \description "This is the top level notation context.  No
520 other context can contain a @code{Score} context.  This context
521 handles the administration of time signatures.  It also makes sure
522 that items such as clefs, time signatures, and key-signatures are
523 aligned across staves.
524
525 You cannot explicitly instantiate a @code{Score} context (since it
526 is not contained in any other context).  It is instantiated
527 automatically when an output definition (a @code{\\score} or
528 @code{\\layout} block) is processed."
529
530   \consists "Paper_column_engraver"
531   \consists "Repeat_acknowledge_engraver"
532   \consists "Staff_collecting_engraver"
533
534   \alias "Timing"
535
536   %% An alias for Timing is established by the Timing_translator in
537   %% whatever context it is initialized, and the timing variables are
538   %% then copied from wherever Timing had been previously established.
539   %% The alias at Score level provides a target for initializing
540   %% Timing variables in layout definitions before any
541   %% Timing_translator has been run.
542
543   % timing translator must come BEFORE bar number engraver
544   \consists "Timing_translator"
545   \consists "Default_bar_line_engraver"
546   \consists "Output_property_engraver"
547   \consists "System_start_delimiter_engraver"
548   \consists "Mark_engraver"
549   \consists "Volta_engraver"
550   \consists "Metronome_mark_engraver"
551   \consists "Break_align_engraver"
552   \consists "Spacing_engraver"
553   \consists "Grace_spacing_engraver"
554   \consists "Vertical_align_engraver"
555   \consists "Stanza_number_align_engraver"
556   \consists "Bar_number_engraver"
557   \consists "Parenthesis_engraver"
558   \consists "Concurrent_hairpin_engraver"
559   \consists "Beam_collision_engraver"
560   \consists "Footnote_engraver"
561
562   \defaultchild "Staff"
563
564   \accepts "FretBoards"
565   \accepts "Staff"
566   \accepts "RhythmicStaff"
567   \accepts "TabStaff"
568   \accepts "VaticanaStaff"
569   \accepts "GregorianTranscriptionStaff"
570   \accepts "MensuralStaff"
571   \accepts "PetrucciStaff"
572   \accepts "StaffGroup"
573   \accepts "DrumStaff"
574   \accepts "KievanStaff"
575   \accepts "Lyrics"
576   \accepts "ChordNames"
577   \accepts "GrandStaff"
578   \accepts "ChoirStaff"
579   \accepts "PianoStaff"
580   \accepts "Devnull"
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   barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers
611   barNumberFormatter = #robust-bar-number-function
612   clefOctavationFormatter = #clef-octavation-markup
613   cueClefOctavationFormatter = #clef-octavation-markup
614   automaticBars = ##t
615
616   explicitClefVisibility = #all-visible
617   explicitCueClefVisibility = #end-of-line-invisible
618   explicitKeySignatureVisibility = #all-visible
619   implicitTimeSignatureVisibility = #end-of-line-invisible
620
621   repeatCountVisibility = #all-repeat-counts-visible
622
623   timeSignatureSettings = #default-time-signature-settings
624   timeSignatureFraction = 4/4
625
626 %% These defaults should be the same as the rules established in
627 %%   scm/time-signature-settings.scm for 4/4 time
628   measureLength = #(ly:make-moment 4 4)
629   baseMoment = #(ly:make-moment 1  4)
630   beatStructure = #'(1 1 1 1)
631   beamExceptions = #'((end . (((1 . 8) . (4 4))
632                               ((1 . 12) . (3 3 3 3)))))
633   beamHalfMeasure = ##t
634
635   autoBeaming = ##t
636   autoBeamCheck = #default-auto-beam-check
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
710   %% See also make-voice-props-set
711   graceSettings = #`(
712     (Voice Stem direction ,UP)
713     (Voice Stem font-size -3)
714     (Voice Flag font-size -3)
715     (Voice NoteHead font-size -3)
716     (Voice TabNoteHead font-size -4)
717     (Voice Dots font-size -3)
718     (Voice Stem length-fraction 0.8)
719     (Voice Stem no-stem-extend #t)
720     (Voice Beam beam-thickness 0.384)
721     (Voice Beam length-fraction 0.8)
722     (Voice Accidental font-size -4)
723     (Voice AccidentalCautionary font-size -4)
724     (Voice Slur direction ,DOWN)
725     (Voice Script font-size -3)
726     (Voice Fingering font-size -8)
727     (Voice StringNumber font-size -8)
728   )
729
730   keepAliveInterfaces = #'(
731     bass-figure-interface
732     chord-name-interface
733     cluster-beacon-interface
734     fret-diagram-interface
735     lyric-syllable-interface
736     note-head-interface
737     tab-note-head-interface
738     lyric-interface
739     percent-repeat-item-interface
740     percent-repeat-interface
741
742     ;; need this, as stanza numbers are items, and appear only once.
743     stanza-number-interface
744   )
745   % \quoteDuring is supposed to quote everything, cueDuring only the essentials
746   quotedEventTypes = #'(StreamEvent)
747   quotedCueEventTypes = #'(
748     note-event
749     rest-event
750     tie-event
751     beam-event
752     tuplet-span-event)
753   instrumentTransposition = #(ly:make-pitch 0 0 0)
754
755   topLevelAlignment = ##t
756
757   timing = ##t
758 }
759
760
761
762
763 \context {
764   \type "Engraver_group"
765   \name "FiguredBass"
766   \description "A context for printing a figured bass line."
767
768   \consists "Figured_bass_engraver"
769   \consists "Separating_line_group_engraver"
770   \consists "Hara_kiri_engraver"
771
772   \override VerticalAxisGroup.remove-empty = ##t
773   \override VerticalAxisGroup.remove-first = ##t
774   \override VerticalAxisGroup.staff-affinity = #UP
775   \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
776   \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
777 }
778
779 \context {
780   \name "Devnull"
781   \type "Engraver_group"
782
783 %% don't want to route anything out of here:
784   \alias "Staff"
785   \alias "Voice"
786   \description "Silently discards all musical information given to this
787 context."
788 }
789
790 \context {
791   \Voice
792   \name "TabVoice"
793   \alias "Voice"
794   \consists "Tab_note_heads_engraver"
795   \consists "Tab_tie_follow_engraver"
796
797   \remove "Note_heads_engraver"
798   \remove "Fingering_engraver"
799   \remove "New_fingering_engraver"
800   \remove "Pitched_trill_engraver"
801
802   \description "Context for drawing notes in a Tab staff."
803
804   %% TabStaff increase the staff-space, which in turn
805   %% increases beam thickness and spacing; beams are
806   %% too big. We have to adjust the beam settings:
807   \override Beam.beam-thickness = #0.32
808   \override Beam.length-fraction = #0.62
809   %% the same goes for tremolo beams
810   \override StemTremolo.beam-thickness = #0.32
811   %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
812   %% and the tablature staff space is scaled (1.5 by default),
813   %% so we use the inversion of the scale factor:
814   \override StemTremolo.length-fraction = #(lambda (grob)
815                                                (/ 1 (ly:staff-symbol-staff-space grob)))
816   \override StemTremolo.beam-width = #stem-tremolo::calc-tab-width
817
818   %% No accidental in tablature !
819   \remove "Accidental_engraver"
820   %% make the Stems as short as possible to minimize their influence
821   %% on the slur::calc-control-points routine
822   \override Stem.no-stem-extend = ##t
823   \override Flag.style = #'no-flag
824   \override Stem.details = #'((lengths 0 0 0 0 0 0)
825                                 (beamed-lengths 0 0 0)
826                                 (beamed-minimum-free-lengths 0 0 0)
827                                 (beamed-extreme-minimum-free-lengths 0 0)
828                                 (stem-shorten 0 0))
829   %% after all, the stubs of the stems may still be visible, so ...
830   \override Stem.stencil = ##f
831   \override Flag.stencil = ##f
832   %% automatic beams should be suppressed for similar reasons ...
833   autoBeaming = ##f
834   %% remove beams, dots and rests ...
835   \override Beam.stencil = ##f
836   \override StemTremolo.stencil = ##f
837   \override Dots.stencil = ##f
838   \override Rest.stencil = ##f
839   \override MultiMeasureRest.stencil = ##f
840   \override MultiMeasureRestNumber.stencil = ##f
841   \override MultiMeasureRestText.stencil = ##f
842   %% ... all kinds of ties/slurs
843   \override Tie.stencil = ##f
844   \override RepeatTie.stencil = ##f
845   \override LaissezVibrerTie.stencil = ##f
846   \override Slur.stencil = #slur::draw-tab-slur
847   \override PhrasingSlur.stencil = ##f
848   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
849   \override Tie.after-line-breaking = #tie::handle-tab-note-head
850   \override RepeatTie.after-line-breaking = #repeat-tie::handle-tab-note-head
851   %% ... and all kinds of markups, spanners etc.
852   \override TupletBracket.stencil = ##f
853   \override TupletNumber.stencil = ##f
854   \override DynamicText.stencil = ##f
855   \override DynamicTextSpanner.stencil = ##f
856   \override TextSpanner.stencil = ##f
857   \override Hairpin.stencil = ##f
858   \override Script.stencil = ##f
859   \override TextScript.stencil = ##f
860   \override Glissando.stencil = #glissando::draw-tab-glissando
861   %% the direction for glissando lines will be automatically corrected
862   \override Glissando.extra-dy = #glissando::calc-tab-extra-dy
863   \override Glissando.bound-details.right = #`((attach-dir . ,LEFT)
864                                                    (padding . 0.3))
865   \override Glissando.bound-details.left = #`((attach-dir . ,RIGHT)
866                                                    (padding . 0.3))
867   %% dead notes
868   \override TabNoteHead.glyph-name = #tab-note-head::calc-glyph-name
869   \override TabNoteHead.stencil = #tab-note-head::whiteout-if-style-set
870 }
871
872 \context {
873   \Staff
874   \alias "Staff"
875   \name "TabStaff"
876   \denies "Voice"
877   \consists "Tab_staff_symbol_engraver"
878
879   \description "Context for generating tablature. It accepts only @code{TabVoice}
880 contexts and handles the line spacing, the tablature clef etc. properly."
881
882   \accepts "TabVoice"
883   \defaultchild "TabVoice"
884
885   %% 6 strings, bigger spacing
886   \override StaffSymbol.staff-space = #1.5
887
888   %% Don't draw stems over the tablature figures !
889   \override Stem.avoid-note-head = ##t
890
891   %% No accidental in tablature !
892   \remove "Accidental_engraver"
893   \remove "Key_engraver"
894
895   \remove "Ottava_spanner_engraver"
896   %% the clef handler
897   \override Clef.stencil = #clef::print-modern-tab-if-set
898   %% no time signature
899   \override TimeSignature.stencil = ##f
900   %% no arpeggios
901   \override Arpeggio.stencil = ##f
902   %% we ignore collision warnings that may occur due to
903   %% stem overlapping, because we have no stems ;-)
904   \override NoteColumn.ignore-collision = ##t
905   %% Special "TAB" clef
906   clefGlyph = #"clefs.tab"
907   clefPosition = #0
908   %% Change string if note results in negative fret number
909   handleNegativeFrets = #'recalculate
910   %% Allow open strings even if minimumFret is set
911   restrainOpenStrings = ##f
912 }
913
914 \context {
915   \Voice
916   \name "VaticanaVoice"
917   \alias "Voice"
918   \description "Same as @code{Voice} context, except that it is
919 accommodated for typesetting Gregorian Chant in the notational style
920 of Editio Vaticana."
921
922   \remove "Slur_engraver"
923   \remove "Stem_engraver"
924   \remove "Ligature_bracket_engraver"
925   \consists "Vaticana_ligature_engraver"
926   \remove "Text_spanner_engraver"
927   \consists "Episema_engraver"
928
929   %% Set default head for notes outside of \[ \].
930   \override NoteHead.style = #'vaticana.punctum
931
932   %% Put some space before and after divisiones.
933   %% FIXME: This does not seem to show any effect.
934   \override Script.padding = #0.5
935
936   %% There are no beams in Gregorian Chant notation.
937   autoBeaming = ##f
938 }
939
940 \context {
941   \Staff
942   \name "VaticanaStaff"
943   \alias "Staff"
944   \denies "Voice"
945   \accepts "VaticanaVoice"
946   \defaultchild "VaticanaVoice"
947
948   \description "Same as @code{Staff} context, except that it is
949 accommodated for typesetting Gregorian Chant in the notational style
950 of Editio Vaticana."
951
952   \remove "Time_signature_engraver"
953   \consists "Custos_engraver"
954
955   %% We can not remove Bar_engraver; otherwise clefs and custodes will
956   %% not show up any more among other line breaking issues.
957   %% Instead, we make the grob transparent.
958   \override BarLine.transparent = ##t
959
960   \override StaffSymbol.line-count = #4
961   \override StaffSymbol.thickness = #0.6
962
963   %% FIXME: unit on StaffSymbol's width should be \linewidth.
964   %% \override StaffSymbol.width = #60.0
965
966   %% Choose vaticana do clef on 3rd line as default.
967   clefGlyph = #"clefs.vaticana.do"
968   middleCPosition = #1
969   middleCClefPosition = #1
970   clefPosition = #1
971   clefOctavation = #0
972
973   %% Select vaticana style font.
974   \override KeySignature.glyph-name-alist = #alteration-vaticana-glyph-name-alist
975   \override Accidental.glyph-name-alist = #alteration-vaticana-glyph-name-alist
976   \override Custos.style = #'vaticana
977   \override Custos.neutral-position = #3
978   \override Custos.neutral-direction = #DOWN
979   \override Dots.style = #'vaticana
980 }
981
982 \context {
983   \Voice
984   \name "GregorianTranscriptionVoice"
985   \alias "Voice"
986   \consists "Episema_engraver"
987
988   %% Removing ligature bracket engraver without replacing it by some
989   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
990   %% warning for every "\[" and "\]".  Therefore, we make the grob
991   %% transparent instead.
992   \override LigatureBracket.transparent = ##t
993
994   %% Put some space before and after divisiones.
995   %% FIXME: This does not seem to show any effect.
996   \override Script.padding = #0.5
997
998   %% There are no beams in Gregorian Chant notation.
999   autoBeaming = ##f
1000
1001 }
1002
1003 \context {
1004   \Staff
1005   \name "GregorianTranscriptionStaff"
1006   \alias "Staff"
1007   \denies "Voice"
1008   \accepts "GregorianTranscriptionVoice"
1009   \defaultchild "GregorianTranscriptionVoice"
1010
1011   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1012   %% not show up any more among other line breaking issues.
1013   %% Instead, we make the grob transparent.
1014   \override BarLine.transparent = ##t
1015 }
1016
1017 \context {
1018   \Voice
1019   \name "MensuralVoice"
1020   \alias "Voice"
1021   \description "Same as @code{Voice} context, except that it is
1022 accommodated for typesetting a piece in mensural style."
1023
1024   \remove "Slur_engraver"
1025   \remove "Ligature_bracket_engraver"
1026   \consists "Mensural_ligature_engraver"
1027
1028   %% Set default head for notes outside of \[ \].
1029   \override NoteHead.style = #'mensural
1030   \override Rest.style = #'mensural
1031   \override Flag.style = #'mensural
1032
1033   %% There are no beams in mensural notation.
1034   autoBeaming = ##f
1035 }
1036
1037 \context {
1038   \Staff
1039   \name "MensuralStaff"
1040   \alias "Staff"
1041   \denies "Voice"
1042   \defaultchild "MensuralVoice"
1043   \accepts "MensuralVoice"
1044   \description "Same as @code{Staff} context, except that it is
1045 accommodated for typesetting a piece in mensural style."
1046
1047   \consists "Custos_engraver"
1048
1049   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1050   %% not show up any more among other line breaking issues.
1051   %% Instead, we make the grob transparent.
1052   \override BarLine.transparent = ##t
1053
1054   \override StaffSymbol.thickness = #0.6
1055
1056   %% FIXME: unit on StaffSymbol's width should be \linewidth.
1057   %% \override StaffSymbol.width = #60.0
1058
1059   %% Choose mensural g clef on 2nd line as default.
1060   clefGlyph = #"clefs.mensural.g"
1061   middleCClefPosition = #-6
1062   middleCPosition = #-6
1063   clefPosition = #-2
1064   clefOctavation = #0
1065
1066   %% Select mensural style font.
1067   \override TimeSignature.style = #'mensural
1068   \override KeySignature.glyph-name-alist = #alteration-mensural-glyph-name-alist
1069   \override Accidental.glyph-name-alist = #alteration-mensural-glyph-name-alist
1070   \override Custos.style = #'mensural
1071   \override Custos.neutral-position = #3
1072   \override Custos.neutral-direction = #DOWN
1073
1074   %% Accidentals are valid only once (same as
1075   %% \accidentalStyle forget)
1076   extraNatural = ##f
1077   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1078   autoCautionaries = #'()
1079   printKeyCancellation = ##f
1080 }
1081
1082 \context {
1083   \Voice
1084   \name "PetrucciVoice"
1085   \alias "Voice"
1086   \description "Same as @code{Voice} context, except that it is
1087 accommodated for typesetting a piece in Petrucci style."
1088
1089   \remove "Ligature_bracket_engraver"
1090   \consists "Mensural_ligature_engraver"
1091
1092   %% Set glyph styles.
1093   \override NoteHead.style = #'petrucci
1094   \override Rest.style = #'mensural
1095
1096   % Thickens and shortens stems.
1097   \override Stem.thickness = #1.7
1098   \override Stem.length = #5
1099
1100   %% There are no beams in Petrucci notation.
1101   autoBeaming = ##f
1102 }
1103
1104 \context {
1105   \Staff
1106   \name "PetrucciStaff"
1107   \alias "Staff"
1108   \denies "Voice"
1109   \defaultchild "PetrucciVoice"
1110   \accepts "PetrucciVoice"
1111   \description "Same as @code{Staff} context, except that it is
1112 accommodated for typesetting a piece in Petrucci style."
1113
1114   \consists "Custos_engraver"
1115
1116   \override StaffSymbol.thickness = #1.3
1117
1118   %% Choose Petrucci g clef on 2nd line as default.
1119   clefGlyph = #"clefs.petrucci.g"
1120   middleCClefPosition = #-6
1121   middleCPosition = #-6
1122   clefPosition = #-2
1123   clefOctavation = #0
1124
1125   \override Custos.style = #'mensural
1126   \override Custos.neutral-position = #3
1127   \override Custos.neutral-direction = #DOWN
1128
1129   %% Accidentals are valid only once (if the following note is different)
1130   extraNatural = ##f
1131   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1132                              ,neo-modern-accidental-rule)
1133   autoCautionaries = #'()
1134   printKeyCancellation = ##f
1135 }
1136
1137 \context {
1138  \Voice
1139  \name "KievanVoice"
1140  \alias "Voice"
1141  \description "Same as @code{Voice} context, except that it is
1142 accommodated for typesetting a piece in Kievan style."
1143
1144  %% Set glyph styles.
1145  \override NoteHead.style = #'kievan
1146  \override Stem.X-offset = #stem::kievan-offset-callback
1147  \override Stem.stencil = ##f
1148  \override Flag.stencil = ##f
1149  \override Rest.style = #'mensural
1150  \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
1151  \override Dots.style = #'kievan
1152  \override Slur.stencil = ##f
1153  \override Stem.length = #0.0
1154  \override Beam.positions = #beam::get-kievan-positions
1155  \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
1156  \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
1157
1158  %% There are beams in Kievan notation, but they are invoked manually
1159  autoBeaming = ##f
1160 }
1161
1162 \context {
1163  \Staff
1164  \name "KievanStaff"
1165  \alias "Staff"
1166  \denies "Voice"
1167  \defaultchild "KievanVoice"
1168  \accepts "KievanVoice"
1169  \description "Same as @code{Staff} context, except that it is
1170 accommodated for typesetting a piece in Kievan style."
1171
1172  \remove "Time_signature_engraver"
1173
1174  %% Choose Kievan tsefaut clef
1175  clefGlyph = #"clefs.kievan.do"
1176  middleCClefPosition = #0
1177  middleCPosition = #0
1178  clefPosition = #0
1179  clefOctavation = #0
1180
1181  %% Accidentals are valid only once (if the following note is different)
1182  extraNatural = ##f
1183  autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1184                             ,neo-modern-accidental-rule)
1185  autoCautionaries = #'()
1186  printKeyCancellation = ##f
1187
1188 }
1189
1190 %% Keep the old definitions in here for compatibility (they erase previous
1191 %% settings to the corresponding context!).
1192 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1193 %% into the desired context. That's just as easy, requires only one line more
1194 %% (the \*Staff), but preserves previous context mods.
1195 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1196 RemoveEmptyStaffContext = \context {
1197   \Staff
1198   \RemoveEmptyStaves
1199 }
1200
1201 AncientRemoveEmptyStaffContext = \context {
1202   \VaticanaStaff
1203   \RemoveEmptyStaves
1204 }
1205
1206 RemoveEmptyDrumStaffContext = \context {
1207   \DrumStaff
1208   \RemoveEmptyStaves
1209 }
1210
1211 RemoveEmptyRhythmicStaffContext = \context {
1212   \RhythmicStaff
1213   \RemoveEmptyStaves
1214 }
1215
1216 RemoveEmptyTabStaffContext = \context {
1217   \TabStaff
1218   \RemoveEmptyStaves
1219 }