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