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