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