]> 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   clefTranspositionFormatter = #clef-transposition-markup
615   cueClefTranspositionFormatter = #clef-transposition-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   %% No accidental in tablature !
804   \remove "Accidental_engraver"
805 }
806
807 \context {
808   \Staff
809   \alias "Staff"
810   \name "TabStaff"
811   \denies "Voice"
812   \consists "Tab_staff_symbol_engraver"
813
814   \description "Context for generating tablature. It accepts only @code{TabVoice}
815 contexts and handles the line spacing, the tablature clef etc. properly."
816
817   \accepts "TabVoice"
818   \defaultchild "TabVoice"
819
820   %% 6 strings, bigger spacing
821   \override StaffSymbol.staff-space = #1.5
822
823   %% Don't draw stems over the tablature figures !
824   \override Stem.avoid-note-head = ##t
825
826   %% No accidental in tablature !
827   \remove "Accidental_engraver"
828   \remove "Key_engraver"
829
830   \remove "Ottava_spanner_engraver"
831   %% the clef handler
832   \override Clef.stencil = #clef::print-modern-tab-if-set
833   %% no time signature
834   \override TimeSignature.stencil = ##f
835   %% no arpeggios
836   \override Arpeggio.stencil = ##f
837   %% we ignore collision warnings that may occur due to
838   %% stem overlapping, because we have no stems ;-)
839   \override NoteColumn.ignore-collision = ##t
840   %% Special "TAB" clef
841   clefGlyph = #"clefs.tab"
842   clefPosition = #0
843   %% Change string if note results in negative fret number
844   handleNegativeFrets = #'recalculate
845   %% Allow open strings even if minimumFret is set
846   restrainOpenStrings = ##f
847
848   %% TabStaff increase the staff-space, which in turn
849   %% increases beam thickness and spacing; beams are
850   %% too big. We have to adjust the beam settings:
851   \override Beam.beam-thickness = #0.32
852   \override Beam.length-fraction = #0.62
853   %% the same goes for tremolo beams
854   \override StemTremolo.beam-thickness = #0.32
855   %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
856   %% and the tablature staff space is scaled (1.5 by default),
857   %% so we use the inversion of the scale factor:
858   \override StemTremolo.length-fraction = #(lambda (grob)
859                                                (/ 1 (ly:staff-symbol-staff-space grob)))
860   \override StemTremolo.beam-width = #stem-tremolo::calc-tab-width
861
862   %% make the Stems as short as possible to minimize their influence
863   %% on the slur::calc-control-points routine
864   \override Stem.no-stem-extend = ##t
865   \override Flag.style = #'no-flag
866   \override Stem.details = #'((lengths 0 0 0 0 0 0)
867                                 (beamed-lengths 0 0 0)
868                                 (beamed-minimum-free-lengths 0 0 0)
869                                 (beamed-extreme-minimum-free-lengths 0 0)
870                                 (stem-shorten 0 0))
871   %% after all, the stubs of the stems may still be visible, so ...
872   \override Stem.stencil = ##f
873   \override Flag.stencil = ##f
874   %% automatic beams should be suppressed for similar reasons ...
875   autoBeaming = ##f
876   %% remove beams, dots and rests ...
877   \override Beam.stencil = ##f
878   \override StemTremolo.stencil = ##f
879   \override Dots.stencil = ##f
880   \override Rest.stencil = ##f
881   \override MultiMeasureRest.stencil = ##f
882   \override MultiMeasureRestNumber.stencil = ##f
883   \override MultiMeasureRestText.stencil = ##f
884   %% ... all kinds of ties/slurs
885   \override Tie.stencil = ##f
886   \override RepeatTie.stencil = ##f
887   \override LaissezVibrerTie.stencil = ##f
888   \override Slur.stencil = #slur::draw-tab-slur
889   \override PhrasingSlur.stencil = ##f
890   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
891   \override Tie.after-line-breaking = #tie::handle-tab-note-head
892   \override RepeatTie.after-line-breaking = #repeat-tie::handle-tab-note-head
893   %% ... and all kinds of markups, spanners etc.
894   \override TupletBracket.stencil = ##f
895   \override TupletNumber.stencil = ##f
896   \override DynamicText.stencil = ##f
897   \override DynamicTextSpanner.stencil = ##f
898   \override TextSpanner.stencil = ##f
899   \override Hairpin.stencil = ##f
900   \override Script.stencil = ##f
901   \override TextScript.stencil = ##f
902   \override Glissando.stencil = #glissando::draw-tab-glissando
903   %% the direction for glissando lines will be automatically corrected
904   \override Glissando.extra-dy = #glissando::calc-tab-extra-dy
905   \override Glissando.bound-details.right = #`((attach-dir . ,LEFT)
906                                                    (padding . 0.3))
907   \override Glissando.bound-details.left = #`((attach-dir . ,RIGHT)
908                                                    (padding . 0.3))
909   %% dead notes
910   \override TabNoteHead.glyph-name = #tab-note-head::calc-glyph-name
911   \override TabNoteHead.stencil = #tab-note-head::whiteout-if-style-set
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   clefTransposition = #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   clefTransposition = #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   clefTransposition = #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   \remove "Ligature_bracket_engraver"
1145   \consists "Kievan_ligature_engraver"
1146
1147  %% Set glyph styles.
1148  \override NoteHead.style = #'kievan
1149  \override Stem.X-offset = #stem::kievan-offset-callback
1150  \override Stem.stencil = ##f
1151  \override Flag.stencil = ##f
1152  \override Rest.style = #'mensural
1153  \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
1154  \override Dots.style = #'kievan
1155  \override Slur.stencil = ##f
1156  \override Stem.length = #0.0
1157  \override Beam.positions = #beam::get-kievan-positions
1158  \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
1159  \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
1160
1161  %% There are beams in Kievan notation, but they are invoked manually
1162  autoBeaming = ##f
1163 }
1164
1165 \context {
1166  \Staff
1167  \name "KievanStaff"
1168  \alias "Staff"
1169  \denies "Voice"
1170  \defaultchild "KievanVoice"
1171  \accepts "KievanVoice"
1172  \description "Same as @code{Staff} context, except that it is
1173 accommodated for typesetting a piece in Kievan style."
1174
1175  \remove "Time_signature_engraver"
1176
1177  %% Choose Kievan tsefaut clef
1178  clefGlyph = #"clefs.kievan.do"
1179  middleCClefPosition = #0
1180  middleCPosition = #0
1181  clefPosition = #0
1182  clefTransposition = #0
1183
1184  %% Accidentals are valid only once (if the following note is different)
1185  extraNatural = ##f
1186  autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1187                             ,neo-modern-accidental-rule)
1188  autoCautionaries = #'()
1189  printKeyCancellation = ##f
1190
1191 }
1192
1193 %% Keep the old definitions in here for compatibility (they erase previous
1194 %% settings to the corresponding context!).
1195 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1196 %% into the desired context. That's just as easy, requires only one line more
1197 %% (the \*Staff), but preserves previous context mods.
1198 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1199 RemoveEmptyStaffContext = \context {
1200   \Staff
1201   \RemoveEmptyStaves
1202 }
1203
1204 AncientRemoveEmptyStaffContext = \context {
1205   \VaticanaStaff
1206   \RemoveEmptyStaves
1207 }
1208
1209 RemoveEmptyDrumStaffContext = \context {
1210   \DrumStaff
1211   \RemoveEmptyStaves
1212 }
1213
1214 RemoveEmptyRhythmicStaffContext = \context {
1215   \RhythmicStaff
1216   \RemoveEmptyStaves
1217 }
1218
1219 RemoveEmptyTabStaffContext = \context {
1220   \TabStaff
1221   \RemoveEmptyStaves
1222 }