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