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