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