]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
New bar line interface
[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.16.0"
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 "Hara_kiri_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 "Footnote_engraver"
89
90   localKeySignature = #'()
91   createSpacing = ##t
92   ignoreFiguredBassRest = ##f
93
94   %% explicitly set instrument, so we don't get
95   %% weird effects when doing instrument names for
96   %% piano staves
97   instrumentName = #'()
98   shortInstrumentName = #'()
99
100   \defaultchild "Voice"
101   \accepts "Voice"
102   \accepts "CueVoice"
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 "Staff"
148   \accepts "DrumStaff"
149   \accepts "RhythmicStaff"
150   \accepts "GrandStaff"
151   \accepts "PianoStaff"
152   \accepts "Lyrics"
153   \accepts "ChordNames"
154   \accepts "FiguredBass"
155   \accepts "ChoirStaff"
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   localKeySignature = #'()
166   createSpacing = ##t
167
168   squashedPosition = #0
169   \name RhythmicStaff
170   \alias "Staff"
171
172   \override BarLine #'bar-extent = #'(-2 . 2)
173   \override VoltaBracket #'staff-padding = #3
174   \override StaffSymbol #'line-count = #1
175
176   \override Stem  #'neutral-direction = #UP
177   \override Beam  #'neutral-direction = #UP
178
179   \consists "Output_property_engraver"
180   \consists "Font_size_engraver"
181   \consists "Separating_line_group_engraver"
182   \consists "Dot_column_engraver"
183   \consists "Bar_engraver"
184   \consists "Staff_symbol_engraver"
185   \consists "Pitch_squash_engraver"
186   \consists "Time_signature_engraver"
187   \consists "Instrument_name_engraver"
188   \consists "Axis_group_engraver"
189   \consists "Ledger_line_engraver"
190
191   %% explicitly set instrument, so it is not inherited from the parent
192   instrumentName = #'()
193   shortInstrumentName = #'()
194
195   \accepts "Voice"
196   \accepts "CueVoice"
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
215   \consists "Font_size_engraver"
216
217   \consists "Pitched_trill_engraver"
218   \consists "Output_property_engraver"
219   \consists "Arpeggio_engraver"
220   \consists "Multi_measure_rest_engraver"
221   \consists "Text_spanner_engraver"
222   \consists "Trill_spanner_engraver"
223   \consists "Grob_pq_engraver"
224   \consists "Forbid_line_break_engraver"
225   \consists "Laissez_vibrer_engraver"
226   \consists "Repeat_tie_engraver"
227   \consists "Note_head_line_engraver"
228   \consists "Glissando_engraver"
229   \consists "Ligature_bracket_engraver"
230   \consists "Breathing_sign_engraver"
231   \consists "Note_heads_engraver"
232   \consists "Dots_engraver"
233   \consists "Rest_engraver"
234   \consists "Tweak_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
245   %% must come before Script_column_engraver.
246   \consists "New_fingering_engraver"
247
248   \consists "Chord_tremolo_engraver"
249   \consists "Double_percent_repeat_engraver"
250   \consists "Percent_repeat_engraver"
251   \consists "Slash_repeat_engraver"
252   \consists "Part_combine_engraver"
253
254   \consists "Text_engraver"
255   \consists "New_dynamic_engraver"
256   \consists "Dynamic_align_engraver"
257 %  \consists "Dynamic_engraver"
258   \consists "Fingering_engraver"
259   \consists "Bend_engraver"
260
261   \consists "Script_engraver"
262   \consists "Script_column_engraver"
263   \consists "Fingering_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   \consists "Tweak_engraver"
409
410   pedalSustainStrings = #'("Ped." "*Ped." "*")
411   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
412   \override VerticalAxisGroup #'staff-affinity = #CENTER
413   \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing =
414     #'((basic-distance . 5)
415        (padding . 0.5))
416   \override TextScript #'font-shape = #'italic
417   \override DynamicLineSpanner #'Y-offset = #0
418   \override DynamicText #'X-offset =
419   #(ly:make-simple-closure
420     `(,+
421       ,(ly:make-simple-closure
422          (list ly:self-alignment-interface::centered-on-note-columns))
423       ,(ly:make-simple-closure
424         (list ly:self-alignment-interface::x-aligned-on-self))))
425
426   \description "Holds a single line of dynamics, which will be
427 centered between the staves surrounding this context."
428 }
429
430
431 \context{
432   \type "Engraver_group"
433
434   \description "Corresponds to a voice with lyrics.  Handles the
435 printing of a single line of lyrics."
436
437   \name "Lyrics"
438   \consists "Lyric_engraver"
439   \consists "Extender_engraver"
440   \consists "Hyphen_engraver"
441   \consists "Tweak_engraver"
442   \consists "Stanza_number_engraver"
443   \consists "Instrument_name_engraver"
444   \consists "Font_size_engraver"
445   \consists "Hara_kiri_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
493     #'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 "Hara_kiri_engraver"
509 %  \consists "Note_spacing_engraver"
510   \override VerticalAxisGroup #'remove-first = ##t
511   \override VerticalAxisGroup #'remove-empty = ##t
512   \override VerticalAxisGroup #'staff-affinity = #DOWN
513   \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5
514   \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
515 }
516
517 \context {
518   \type "Score_engraver"
519   \name "Score"
520
521   \description "This is the top level notation context.  No
522 other context can contain a @code{Score} context.  This context
523 handles the administration of time signatures.  It also makes sure
524 that items such as clefs, time signatures, and key-signatures are
525 aligned across staves.
526
527 You cannot explicitly instantiate a @code{Score} context (since it
528 is not contained in any other context).  It is instantiated
529 automatically when an output definition (a @code{\score} or
530 @code{\layout} block) is processed."
531
532   \consists "Paper_column_engraver"
533   \consists "Repeat_acknowledge_engraver"
534   \consists "Staff_collecting_engraver"
535
536   \alias "Timing"
537
538   %% An alias for Timing is established by the Timing_translator in
539   %% whatever context it is initialized, and the timing variables are
540   %% then copied from wherever Timing had been previously established.
541   %% The alias at Score level provides a target for initializing
542   %% Timing variables in layout definitions before any
543   %% Timing_translator has been run.
544
545   % timing translator must come BEFORE bar number engraver
546   \consists "Timing_translator"
547   \consists "Default_bar_line_engraver"
548   \consists "Output_property_engraver"
549   \consists "System_start_delimiter_engraver"
550   \consists "Mark_engraver"
551   \consists "Volta_engraver"
552   \consists "Metronome_mark_engraver"
553   \consists "Break_align_engraver"
554   \consists "Spacing_engraver"
555   \consists "Grace_spacing_engraver"
556   \consists "Vertical_align_engraver"
557   \consists "Stanza_number_align_engraver"
558   \consists "Bar_number_engraver"
559   \consists "Parenthesis_engraver"
560   \consists "Concurrent_hairpin_engraver"
561   \consists "Beam_collision_engraver"
562   \consists "Footnote_engraver"
563
564   \defaultchild "Staff"
565
566   \accepts "FretBoards"
567   \accepts "Staff"
568   \accepts "RhythmicStaff"
569   \accepts "TabStaff"
570   \accepts "VaticanaStaff"
571   \accepts "GregorianTranscriptionStaff"
572   \accepts "MensuralStaff"
573   \accepts "PetrucciStaff"
574   \accepts "StaffGroup"
575   \accepts "DrumStaff"
576   \accepts "KievanStaff"
577   \accepts "Lyrics"
578   \accepts "ChordNames"
579   \accepts "GrandStaff"
580   \accepts "ChoirStaff"
581   \accepts "PianoStaff"
582   \accepts "Devnull"
583   \accepts "NoteNames"
584   \accepts "FiguredBass"
585
586   noteToFretFunction = #determine-frets
587   predefinedDiagramTable = ##f
588   soloText = #"Solo"
589   soloIIText = #"Solo II"
590   aDueText = #"a2"
591   printPartCombineTexts = ##t
592   partCombineTextsOnNote = ##t
593   systemStartDelimiter =#'SystemStartBar
594
595   drumStyleTable = #drums-style
596
597   melismaBusyProperties = #default-melisma-properties
598   tieWaitForNote = ##f
599   clefGlyph = #"clefs.G"
600   clefPosition = #-2
601   middleCClefPosition = #-6
602   middleCPosition = #-6
603   firstClef = ##t
604
605   crescendoSpanner = #'hairpin
606   decrescendoSpanner = #'hairpin
607
608   defaultBarType = #"|"
609   doubleRepeatType = #":..:"
610   startRepeatType = #".|:"
611   endRepeatType = #":|."
612   barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers
613   barNumberFormatter = #robust-bar-number-function
614   automaticBars = ##t
615
616   explicitClefVisibility = #all-visible
617   explicitCueClefVisibility = #end-of-line-invisible
618   explicitKeySignatureVisibility = #all-visible
619   implicitTimeSignatureVisibility = #end-of-line-invisible
620
621   repeatCountVisibility = #all-repeat-counts-visible
622
623   timeSignatureSettings = #default-time-signature-settings
624   timeSignatureFraction = 4/4
625
626 %% These defaults should be the same as the rules established in
627 %%   scm/time-signature-settings.scm for 4/4 time
628   measureLength = #(ly:make-moment 4 4)
629   baseMoment = #(ly:make-moment 1  4)
630   beatStructure = #'(1 1 1 1)
631   beamExceptions = #'((end . (((1 . 8) . (4 4))
632                               ((1 . 12) . (3 3 3 3)))))
633   beamHalfMeasure = ##t
634
635   autoBeaming = ##t
636   autoBeamCheck = #default-auto-beam-check
637
638   scriptDefinitions = #default-script-alist
639
640   pedalSustainStrings = #'("Ped." "*Ped." "*")
641   pedalSustainStyle = #'text
642   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
643   pedalUnaCordaStyle = #'text
644
645 %% These are in ordinary italic font, including the *,
646 %% but they are unlikely to be used,
647 %% as the default pedal-style for SostenutoPedal is 'mixed':
648 %% i.e.  Sost. Ped_____________________
649   pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
650   pedalSostenutoStyle = #'mixed
651
652   harmonicAccidentals = ##t
653   fingeringOrientations = #'(up down)
654   stringNumberOrientations = #'(up down)
655   strokeFingerOrientations = #'(right)
656
657   lyricMelismaAlignment = #LEFT
658   markFormatter = #format-mark-letters
659   rehearsalMark = #1
660   subdivideBeams = ##f
661   extraNatural = ##t
662   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
663   autoCautionaries = #'()
664
665   printKeyCancellation = ##t
666   keyAlterationOrder = #`(
667     (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
668     (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
669     (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
670     (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
671   )
672
673   barCheckSynchronize = ##f
674
675 %% chord names:
676   chordNameFunction = #ignatzek-chord-names
677   minorChordModifier = #(make-simple-markup "m")
678   additionalPitchPrefix = #"" % was "add"
679   majorSevenSymbol = #whiteTriangleMarkup
680   chordNameLowercaseMinor = ##f
681   chordNameSeparator = #(make-hspace-markup 0.5)
682   slashChordSeparator = #(make-simple-markup "/")
683   chordNameExceptions = #ignatzekExceptions
684   chordNoteNamer = #'()
685   chordRootNamer = #note-name->markup
686   chordPrefixSpacer = #0
687   chordNameExceptionsFull = #fullJazzExceptions
688   chordNameExceptionsPartial = #partialJazzExceptions
689   noChordSymbol = #(make-simple-markup "N.C.")
690
691   bassStaffProperties = #'((assign clefGlyph "clefs.F")
692   (assign clefPosition 2)
693   (assign middleCPosition 6)
694   (assign middleCClefPosition 6))
695 %% tablature:
696   stringOneTopmost = ##t
697   highStringOne = ##t
698
699 %% One may change the string tunings as follows :
700 %% The length of the list must be equal to the number of strings
701   stringTunings = #guitar-tuning
702   tablatureFormat = #fret-number-tablature-format
703   tabStaffLineLayoutFunction = #tablature-position-on-lines
704
705 %%
706   figuredBassFormatter = #format-bass-figure
707   metronomeMarkFormatter = #format-metronome-markup
708
709
710   %% See also make-voice-props-set
711   graceSettings = #`(
712     (Voice Stem direction ,UP)
713     (Voice Stem font-size -3)
714     (Voice Flag font-size -3)
715     (Voice NoteHead font-size -3)
716     (Voice TabNoteHead font-size -4)
717     (Voice Dots font-size -3)
718     (Voice Stem length-fraction 0.8)
719     (Voice Stem no-stem-extend #t)
720     (Voice Beam beam-thickness 0.384)
721     (Voice Beam length-fraction 0.8)
722     (Voice Accidental font-size -4)
723     (Voice AccidentalCautionary font-size -4)
724     (Voice Slur direction ,DOWN)
725     (Voice Script font-size -3)
726     (Voice Fingering font-size -8)
727     (Voice StringNumber font-size -8)
728   )
729
730   keepAliveInterfaces = #'(
731     bass-figure-interface
732     chord-name-interface
733     cluster-beacon-interface
734     fret-diagram-interface
735     lyric-syllable-interface
736     note-head-interface
737     tab-note-head-interface
738     lyric-interface
739     percent-repeat-item-interface
740     percent-repeat-interface
741
742     ;; need this, as stanza numbers are items, and appear only once.
743     stanza-number-interface
744   )
745   % \quoteDuring is supposed to quote everything, cueDuring only the essentials
746   quotedEventTypes = #'(StreamEvent)
747   quotedCueEventTypes = #'(
748     note-event
749     rest-event
750     tie-event
751     beam-event
752     tuplet-span-event)
753   instrumentTransposition = #(ly:make-pitch 0 0 0)
754
755   topLevelAlignment = ##t
756
757   timing = ##t
758 }
759
760
761
762
763 \context {
764   \type "Engraver_group"
765   \name "FiguredBass"
766   \description "A context for printing a figured bass line."
767
768   \consists "Figured_bass_engraver"
769   \consists "Separating_line_group_engraver"
770   \consists "Hara_kiri_engraver"
771
772   \override VerticalAxisGroup #'remove-empty = ##t
773   \override VerticalAxisGroup #'remove-first = ##t
774   \override VerticalAxisGroup #'staff-affinity = #UP
775   \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5
776   \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
777 }
778
779 \context {
780   \name "Devnull"
781   \type "Engraver_group"
782
783 %% don't want to route anything out of here:
784   \alias "Staff"
785   \alias "Voice"
786   \description "Silently discards all musical information given to this
787 context."
788 }
789
790 \context {
791   \Voice
792   \name "TabVoice"
793   \alias "Voice"
794   \consists "Tab_note_heads_engraver"
795   \consists "Tab_tie_follow_engraver"
796
797   \remove "Note_heads_engraver"
798   \remove "Fingering_engraver"
799   \remove "New_fingering_engraver"
800   \remove "Pitched_trill_engraver"
801
802   \description "Context for drawing notes in a Tab staff."
803
804   %% TabStaff increase the staff-space, which in turn
805   %% increases beam thickness and spacing; beams are
806   %% too big. We have to adjust the beam settings:
807   \override Beam #'beam-thickness = #0.32
808   \override Beam #'length-fraction = #0.62
809   %% the same goes for tremolo beams
810   \override StemTremolo #'beam-thickness = #0.32
811   %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
812   %% and the tablature staff space is scaled (1.5 by default),
813   %% so we use the inversion of the scale factor:
814   \override StemTremolo #'length-fraction = #(lambda (grob)
815                                                (/ 1 (ly:staff-symbol-staff-space grob)))
816   \override StemTremolo #'beam-width = #stem-tremolo::calc-tab-width
817
818   %% No accidental in tablature !
819   \remove "Accidental_engraver"
820   %% make the Stems as short as possible to minimize their influence
821   %% on the slur::calc-control-points routine
822   \override Stem #'no-stem-extend = ##t
823   \override Flag #'style = #'no-flag
824   \override Stem #'details = #'((lengths 0 0 0 0 0 0)
825                                 (beamed-lengths 0 0 0)
826                                 (beamed-minimum-free-lengths 0 0 0)
827                                 (beamed-extreme-minimum-free-lengths 0 0)
828                                 (stem-shorten 0 0))
829   %% after all, the stubs of the stems may still be visible, so ...
830   \override Stem #'stencil = ##f
831   \override Flag #'stencil = ##f
832   %% automatic beams should be suppressed for similar reasons ...
833   autoBeaming = ##f
834   %% remove beams, dots and rests ...
835   \override Beam #'stencil = ##f
836   \override StemTremolo #'stencil = ##f
837   \override Dots #'stencil = ##f
838   \override Rest #'stencil = ##f
839   \override MultiMeasureRest #'stencil = ##f
840   \override MultiMeasureRestNumber #'stencil = ##f
841   \override MultiMeasureRestText #'stencil = ##f
842   %% ... all kinds of ties/slurs
843   \override Tie  #'stencil = ##f
844   \override RepeatTie #'stencil = ##f
845   \override LaissezVibrerTie #'stencil = ##f
846   \override Slur #'stencil = #slur::draw-tab-slur
847   \override PhrasingSlur #'stencil = ##f
848   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
849   \override Tie #'after-line-breaking = #tie::handle-tab-note-head
850   \override RepeatTie #'after-line-breaking = #repeat-tie::handle-tab-note-head
851   %% ... and all kinds of markups, spanners etc.
852   \override TupletBracket #'stencil = ##f
853   \override TupletNumber #'stencil = ##f
854   \override DynamicText #'stencil = ##f
855   \override DynamicTextSpanner #'stencil = ##f
856   \override TextSpanner #'stencil = ##f
857   \override Hairpin #'stencil = ##f
858   \override Script #'stencil = ##f
859   \override TextScript #'stencil = ##f
860   \override Glissando #'stencil = #glissando::draw-tab-glissando
861   %% the direction for glissando lines will be automatically corrected
862   \override Glissando #'extra-dy = #glissando::calc-tab-extra-dy
863   \override Glissando #'bound-details #'right = #`((attach-dir . ,LEFT)
864                                                    (padding . 0.3))
865   \override Glissando #'bound-details #'left = #`((attach-dir . ,RIGHT)
866                                                    (padding . 0.3))
867   %% dead notes
868   \override TabNoteHead #'glyph-name = #tab-note-head::calc-glyph-name
869   \override TabNoteHead #'stencil = #tab-note-head::whiteout-if-style-set
870 }
871
872 \context {
873   \Staff
874   \alias "Staff"
875   \name "TabStaff"
876   \denies "Voice"
877   \consists "Tab_staff_symbol_engraver"
878
879   \description "Context for generating tablature. It accepts only @code{TabVoice}
880 contexts and handles the line spacing, the tablature clef etc. properly."
881
882   \accepts "TabVoice"
883   \defaultchild "TabVoice"
884
885   %% 6 strings, bigger spacing
886   \override StaffSymbol #'staff-space = #1.5
887
888   %% Don't draw stems over the tablature figures !
889   \override Stem #'avoid-note-head = ##t
890
891   %% No accidental in tablature !
892   \remove "Accidental_engraver"
893   \remove "Key_engraver"
894
895   \remove "Ottava_spanner_engraver"
896   %% the clef handler
897   \override Clef #'stencil = #clef::print-modern-tab-if-set
898   %% no time signature
899   \override TimeSignature #'stencil = ##f
900   %% no arpeggios
901   \override Arpeggio #'stencil = ##f
902   %% we ignore collision warnings that may occur due to
903   %% stem overlapping, because we have no stems ;-)
904   \override NoteColumn #'ignore-collision = ##t
905   %% Special "TAB" clef
906   clefGlyph = #"clefs.tab"
907   clefPosition = #0
908   %% Change string if note results in negative fret number
909   handleNegativeFrets = #'recalculate
910   %% Allow open strings even if minimumFret is set
911   restrainOpenStrings = ##f
912 }
913
914 \context {
915   \Voice
916   \name "VaticanaVoice"
917   \alias "Voice"
918   \description "Same as @code{Voice} context, except that it is
919 accommodated for typesetting Gregorian Chant in the notational style
920 of Editio Vaticana."
921
922   \remove "Slur_engraver"
923   \remove "Stem_engraver"
924   \remove "Ligature_bracket_engraver"
925   \consists "Vaticana_ligature_engraver"
926   \remove "Text_spanner_engraver"
927   \consists "Episema_engraver"
928
929   %% Set default head for notes outside of \[ \].
930   \override NoteHead #'style = #'vaticana.punctum
931
932   %% Put some space before and after divisiones.
933   %% FIXME: This does not seem to show any effect.
934   \override Script #'padding = #0.5
935
936   %% There are no beams in Gregorian Chant notation.
937   autoBeaming = ##f
938 }
939
940 \context {
941   \Staff
942   \name "VaticanaStaff"
943   \alias "Staff"
944   \denies "Voice"
945   \accepts "VaticanaVoice"
946   \defaultchild "VaticanaVoice"
947
948   \description "Same as @code{Staff} context, except that it is
949 accommodated for typesetting Gregorian Chant in the notational style
950 of Editio Vaticana."
951
952   \remove "Time_signature_engraver"
953   \consists "Custos_engraver"
954
955   %% We can not remove Bar_engraver; otherwise clefs and custodes will
956   %% not show up any more among other line breaking issues.
957   %% Instead, we make the grob transparent.
958   \override BarLine #'transparent = ##t
959
960   \override StaffSymbol #'line-count = #4
961   \override StaffSymbol #'thickness = #0.6
962
963   %% FIXME: unit on StaffSymbol's width should be \linewidth.
964   %% \override StaffSymbol #'width = #60.0
965
966   %% Choose vaticana do clef on 3rd line as default.
967   clefGlyph = #"clefs.vaticana.do"
968   middleCPosition = #1
969   middleCClefPosition = #1
970   clefPosition = #1
971   clefOctavation = #0
972
973   %% Select vaticana style font.
974   \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
975   \override Accidental #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
976   \override Custos #'style = #'vaticana
977   \override Custos #'neutral-position = #3
978   \override Custos #'neutral-direction = #DOWN
979   \override Dots #'style = #'vaticana
980 }
981
982 \context {
983   \Voice
984   \name "GregorianTranscriptionVoice"
985   \alias "Voice"
986   \consists "Episema_engraver"
987
988   %% Removing ligature bracket engraver without replacing it by some
989   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
990   %% warning for every "\[" and "\]".  Therefore, we make the grob
991   %% transparent instead.
992   \override LigatureBracket #'transparent = ##t
993
994   %% Put some space before and after divisiones.
995   %% FIXME: This does not seem to show any effect.
996   \override Script #'padding = #0.5
997
998   %% There are no beams in Gregorian Chant notation.
999   autoBeaming = ##f
1000
1001 }
1002
1003 \context {
1004   \Staff
1005   \name "GregorianTranscriptionStaff"
1006   \alias "Staff"
1007   \denies "Voice"
1008   \accepts "GregorianTranscriptionVoice"
1009   \defaultchild "GregorianTranscriptionVoice"
1010
1011   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1012   %% not show up any more among other line breaking issues.
1013   %% Instead, we make the grob transparent.
1014   \override BarLine #'transparent = ##t
1015 }
1016
1017 \context {
1018   \Voice
1019   \name "MensuralVoice"
1020   \alias "Voice"
1021   \description "Same as @code{Voice} context, except that it is
1022 accommodated for typesetting a piece in mensural style."
1023
1024   \remove "Slur_engraver"
1025   \remove "Ligature_bracket_engraver"
1026   \consists "Mensural_ligature_engraver"
1027
1028   %% Set default head for notes outside of \[ \].
1029   \override NoteHead #'style = #'mensural
1030   \override Rest #'style = #'mensural
1031   \override Flag #'style = #'mensural
1032
1033   %% There are no beams in mensural notation.
1034   autoBeaming = ##f
1035 }
1036
1037 \context {
1038   \Staff
1039   \name "MensuralStaff"
1040   \alias "Staff"
1041   \denies "Voice"
1042   \defaultchild "MensuralVoice"
1043   \accepts "MensuralVoice"
1044   \description "Same as @code{Staff} context, except that it is
1045 accommodated for typesetting a piece in mensural style."
1046
1047   \consists "Custos_engraver"
1048
1049   %% We can not remove Bar_engraver; otherwise clefs and custodes will
1050   %% not show up any more among other line breaking issues.
1051   %% Instead, we make the grob transparent.
1052   \override BarLine #'transparent = ##t
1053
1054   \override StaffSymbol #'thickness = #0.6
1055
1056   %% FIXME: unit on StaffSymbol's width should be \linewidth.
1057   %% \override StaffSymbol #'width = #60.0
1058
1059   %% Choose mensural g clef on 2nd line as default.
1060   clefGlyph = #"clefs.mensural.g"
1061   middleCClefPosition = #-6
1062   middleCPosition = #-6
1063   clefPosition = #-2
1064   clefOctavation = #0
1065
1066   %% Select mensural style font.
1067   \override TimeSignature #'style = #'mensural
1068   \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist
1069   \override Accidental #'glyph-name-alist = #alteration-mensural-glyph-name-alist
1070   \override Custos #'style = #'mensural
1071   \override Custos #'neutral-position = #3
1072   \override Custos #'neutral-direction = #DOWN
1073
1074   %% Accidentals are valid only once (same as
1075   %% \accidentalStyle "forget")
1076   extraNatural = ##f
1077   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1078   autoCautionaries = #'()
1079   printKeyCancellation = ##f
1080 }
1081
1082 \context {
1083   \Voice
1084   \name "PetrucciVoice"
1085   \alias "Voice"
1086   \description "Same as @code{Voice} context, except that it is
1087 accommodated for typesetting a piece in Petrucci style."
1088
1089   \remove "Ligature_bracket_engraver"
1090   \consists "Mensural_ligature_engraver"
1091
1092   %% Set glyph styles.
1093   \override NoteHead #'style = #'petrucci
1094   \override Rest #'style = #'mensural
1095
1096   % Thickens and shortens stems.
1097   \override Stem #'thickness = #1.7
1098   \override Stem #'length = #5
1099
1100   %% There are no beams in Petrucci notation.
1101   autoBeaming = ##f
1102 }
1103
1104 \context {
1105   \Staff
1106   \name "PetrucciStaff"
1107   \alias "Staff"
1108   \denies "Voice"
1109   \defaultchild "PetrucciVoice"
1110   \accepts "PetrucciVoice"
1111   \description "Same as @code{Staff} context, except that it is
1112 accommodated for typesetting a piece in Petrucci style."
1113
1114   \consists "Custos_engraver"
1115
1116   \override StaffSymbol #'thickness = #1.3
1117
1118   %% Choose Petrucci g clef on 2nd line as default.
1119   clefGlyph = #"clefs.petrucci.g"
1120   middleCClefPosition = #-6
1121   middleCPosition = #-6
1122   clefPosition = #-2
1123   clefOctavation = #0
1124
1125   \override Custos #'style = #'mensural
1126   \override Custos #'neutral-position = #3
1127   \override Custos #'neutral-direction = #DOWN
1128
1129   %% Accidentals are valid only once (if the following note is different)
1130   extraNatural = ##f
1131   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1132                              ,neo-modern-accidental-rule)
1133   autoCautionaries = #'()
1134   printKeyCancellation = ##f
1135 }
1136
1137 \context {
1138  \Voice
1139  \name "KievanVoice"
1140  \alias "Voice"
1141  \description "Same as @code{Voice} context, except that it is
1142 accommodated for typesetting a piece in Kievan style."
1143
1144  %% Set glyph styles.
1145  \override NoteHead #'style = #'kievan
1146  \override Rest #'style = #'mensural
1147  \override Accidental #'glyph-name-alist = #alteration-kievan-glyph-name-alist
1148  \override Dots #'style = #'kievan
1149  \override Slur #'stencil = ##f
1150
1151  %% There are beams in Kievan notation, but they are invoked manually
1152  autoBeaming = ##f
1153 }
1154
1155 \context {
1156  \Staff
1157  \name "KievanStaff"
1158  \alias "Staff"
1159  \denies "Voice"
1160  \defaultchild "KievanVoice"
1161  \accepts "KievanVoice"
1162  \description "Same as @code{Staff} context, except that it is
1163 accommodated for typesetting a piece in Kievan style."
1164
1165  \remove "Time_signature_engraver"
1166
1167  %% Choose Kievan tsefaut clef
1168  clefGlyph = #"clefs.kievan.do"
1169  middleCClefPosition = #0
1170  middleCPosition = #0
1171  clefPosition = #0
1172  clefOctavation = #0
1173
1174  %% Accidentals are valid only once (if the following note is different)
1175  extraNatural = ##f
1176  autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1177                             ,neo-modern-accidental-rule)
1178  autoCautionaries = #'()
1179  printKeyCancellation = ##f
1180
1181 }
1182
1183 %% Keep the old definitions in here for compatibility (they erase previous
1184 %% settings to the corresponding context!).
1185 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1186 %% into the desired context. That's just as easy, requires only one line more
1187 %% (the \*Staff), but preserves previous context mods.
1188 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1189 RemoveEmptyStaffContext = \context {
1190   \Staff
1191   \RemoveEmptyStaves
1192 }
1193
1194 AncientRemoveEmptyStaffContext = \context {
1195   \VaticanaStaff
1196   \RemoveEmptyStaves
1197 }
1198
1199 RemoveEmptyDrumStaffContext = \context {
1200   \DrumStaff
1201   \RemoveEmptyStaves
1202 }
1203
1204 RemoveEmptyRhythmicStaffContext = \context {
1205   \RhythmicStaff
1206   \RemoveEmptyStaves
1207 }
1208
1209 RemoveEmptyTabStaffContext = \context {
1210   \TabStaff
1211   \RemoveEmptyStaves
1212 }