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