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