]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
Add FiguredBass to ChoirStaff's accepts list.
[lilypond.git] / ly / engraver-init.ly
1 %%%% This file is part of LilyPond, the GNU music typesetter.
2 %%%%
3 %%%% Copyright (C) 1996--2009 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.12.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 }
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 "Rest_swallow_translator"
38   \consists "Output_property_engraver"
39   \consists "Skip_event_swallow_translator"
40   \consists "Hara_kiri_engraver"
41   \consists "Separating_line_group_engraver"
42   \consists "Font_size_engraver"
43   \consists "Instrument_name_engraver"
44
45   predefinedDiagramTable = #fretboard-table
46 }
47
48 \context {
49   \type "Engraver_group"
50   \name "Staff"
51
52   \consists "Output_property_engraver"
53   \consists "Bar_engraver"
54   %% Bar_engraver must be first so default bars aren't overwritten
55   %% with empty ones.
56
57   \consists "Font_size_engraver"
58   \consists "Separating_line_group_engraver"
59   \consists "Dot_column_engraver"
60   \consists "Staff_collecting_engraver"
61
62  %% perhaps move to Voice context?
63   \consists "Ottava_spanner_engraver"
64   \consists "Clef_engraver"
65   \consists "Key_engraver"
66   \consists "Time_signature_engraver"
67   \consists "Ledger_line_engraver"
68   \consists "Staff_symbol_engraver"
69   \consists "Collision_engraver"
70   \consists "Grob_pq_engraver"
71   \consists "Rest_collision_engraver"
72   \consists "Accidental_engraver"
73   \consists "Piano_pedal_engraver"
74   \consists "Piano_pedal_align_engraver"
75   \consists "Instrument_name_engraver"
76   \consists "String_number_engraver"
77   \consists "Axis_group_engraver"
78   \consists "Figured_bass_engraver"
79   \consists "Figured_bass_position_engraver"
80   \consists "Script_row_engraver"
81
82   localKeySignature = #'()
83   createSpacing = ##t
84   ignoreFiguredBassRest = ##t
85
86   %% explicitly set instrument, so we don't get
87   %% weird effects when doing instrument names for
88   %% piano staves
89
90   instrumentName = #'()
91   shortInstrumentName = #'()
92
93   \defaultchild "Voice"
94   \accepts "Voice"
95   \accepts "CueVoice"
96
97   \description "Handles clefs, bar lines, keys, accidentals.  It can contain
98 @code{Voice} contexts."
99
100 }
101
102 \context {
103   \Staff
104   \type "Engraver_group"
105   \name "DrumStaff"
106   \alias "Staff"
107
108   \remove "Accidental_engraver"
109   \remove "Ottava_spanner_engraver"
110   \remove "Key_engraver"
111   \remove "Piano_pedal_engraver"
112   \remove "String_number_engraver"
113
114   \description "Handles typesetting for percussion."
115
116   \denies "Voice"
117   \accepts "DrumVoice"
118   \defaultchild "DrumVoice"
119
120   clefGlyph = #"clefs.percussion"
121   clefPosition = #0
122   \override Script #'staff-padding = #0.75
123 }
124
125
126 \context {
127   \type "Engraver_group"
128   \name "ChoirStaff"
129   \consists "Vertical_align_engraver"
130   topLevelAlignment = ##f
131
132   \consists "System_start_delimiter_engraver"
133   systemStartDelimiter = #'SystemStartBracket
134   vocalName = #'()
135   shortVocalName = #'()
136
137   \accepts "Staff"
138   \accepts "DrumStaff"
139   \accepts "RhythmicStaff"
140   \accepts "GrandStaff"
141   \accepts "PianoStaff"
142   \accepts "Lyrics"
143   \accepts "ChordNames"
144   \accepts "FiguredBass"
145   \accepts "ChoirStaff"
146   \accepts "StaffGroup"
147   \defaultchild "Staff"
148   \description "Identical to @code{StaffGroup} except that the
149 contained staves are not connected vertically."
150 }
151
152 \context{
153   \type "Engraver_group"
154
155   localKeySignature = #'()
156   createSpacing = ##t
157
158   squashedPosition = #0
159   \name RhythmicStaff
160   \alias "Staff"
161
162   \override BarLine #'bar-size = #4
163   \override VoltaBracket #'staff-padding = #3
164   \override StaffSymbol #'line-count = #1
165
166   \override Stem  #'neutral-direction = #UP
167   \override Beam  #'neutral-direction = #UP
168
169   \consists "Output_property_engraver"
170   \consists "Font_size_engraver"
171   \consists "Separating_line_group_engraver"
172   \consists "Dot_column_engraver"
173   \consists "Bar_engraver"
174   \consists "Staff_symbol_engraver"
175   \consists "Pitch_squash_engraver"
176   \consists "Time_signature_engraver"
177   \consists "Instrument_name_engraver"
178   \consists "Axis_group_engraver"
179   \consists "Ledger_line_engraver"
180
181   \accepts "Voice"
182   \accepts "CueVoice"
183   \defaultchild "Voice"
184
185   \description "A context like @code{Staff} but for printing rhythms.
186 Pitches are ignored; the notes are printed on one line."
187 }
188
189
190 \context {
191   \type "Engraver_group"
192   \name "Voice"
193
194   \description "Corresponds to a voice on a staff.  This context
195 handles the conversion of dynamic signs, stems, beams, super- and
196 subscripts, slurs, ties, and rests.
197
198 You have to instantiate this explicitly if you want to have
199 multiple voices on the same staff."
200
201   localKeySignature = #'()
202   \consists "Font_size_engraver"
203
204   \consists "Pitched_trill_engraver"
205   \consists "Output_property_engraver"
206   \consists "Arpeggio_engraver"
207   \consists "Multi_measure_rest_engraver"
208   \consists "Text_spanner_engraver"
209   \consists "Trill_spanner_engraver"
210   \consists "Grob_pq_engraver"
211   \consists "Forbid_line_break_engraver"
212   \consists "Laissez_vibrer_engraver"
213   \consists "Repeat_tie_engraver"
214   \consists "Note_head_line_engraver"
215   \consists "Glissando_engraver"
216   \consists "Ligature_bracket_engraver"
217   \consists "Breathing_sign_engraver"
218   \consists "Note_heads_engraver"
219   \consists "Dots_engraver"
220   \consists "Rest_engraver"
221   \consists "Tweak_engraver"
222
223   %% switch on to make stem directions interpolate for the
224   %% center line.
225   %  \consists "Melody_engraver"
226
227   \consists "Stem_engraver"
228   \consists "Beam_engraver"
229   \consists "Grace_beam_engraver"
230   \consists "Auto_beam_engraver"
231
232   %% must come before Script_column_engraver.
233   \consists "New_fingering_engraver"
234
235   \consists "Chord_tremolo_engraver"
236   \consists "Percent_repeat_engraver"
237   \consists "Slash_repeat_engraver"
238   \consists "Part_combine_engraver"
239
240   \consists "Text_engraver"
241   \consists "New_dynamic_engraver"
242   \consists "Dynamic_align_engraver"
243 %  \consists "Dynamic_engraver"
244   \consists "Fingering_engraver"
245   \consists "Bend_engraver"
246
247   \consists "Script_engraver"
248   \consists "Script_column_engraver"
249   \consists "Rhythmic_column_engraver"
250   \consists "Note_spacing_engraver"
251   \consists "Spanner_break_forbid_engraver"
252   \consists "Phrasing_slur_engraver"
253   \consists "Cluster_spanner_engraver"
254   \consists "Slur_engraver"
255   \consists "Tie_engraver"
256   \consists "Tuplet_engraver"
257   \consists "Grace_engraver"
258   \consists "Instrument_switch_engraver"
259   \consists "Skip_event_swallow_translator"
260 }
261
262 \context{
263   \Voice
264
265   \name CueVoice
266   \alias Voice
267   fontSize = #-4
268   \override Stem #'length-fraction = #(magstep -4)
269   \override Beam #'length-fraction = #(magstep -4)
270   \override Beam #'beam-thickness = #0.35
271 }
272
273 \context {
274   \Voice
275   \name DrumVoice
276   \alias Voice
277
278   \description "A voice on a percussion staff."
279   \remove "Arpeggio_engraver"
280   \consists "Grob_pq_engraver"
281
282   \remove "Note_head_line_engraver"
283   \remove "Glissando_engraver"
284   \remove "Ligature_bracket_engraver"
285   \remove "Note_heads_engraver"
286   \consists "Drum_notes_engraver"
287   \remove "New_fingering_engraver"
288
289   \remove "Fingering_engraver"
290
291   \remove "Cluster_spanner_engraver"
292
293   \consists "Skip_event_swallow_translator"
294 }
295
296 \context{
297   \type "Engraver_group"
298   \name GrandStaff
299   localKeySignature = #'()
300
301   \description "A group of staves, with a brace on the left
302 side, grouping the staves together.  The bar lines of the
303 contained staves are connected vertically."
304
305   \consists "Span_bar_engraver"
306   \consists "Span_arpeggio_engraver"
307   \consists "System_start_delimiter_engraver"
308   systemStartDelimiter = #'SystemStartBrace
309
310   \defaultchild "Staff"
311   \accepts "Staff"
312   \accepts "FiguredBass"
313   \accepts "Dynamics"
314 }
315
316 \context{
317   \GrandStaff
318   \name "PianoStaff"
319   \alias "GrandStaff"
320
321   \description "Just like @code{GrandStaff} but with support for
322 instrument names at the start of each system."
323
324   \consists "Instrument_name_engraver"
325   \consists "Vertical_align_engraver"
326   topLevelAlignment = ##f
327
328   \override StaffGrouper #'between-staff-spacing #'stretchability = #5
329
330   instrumentName = #'()
331   shortInstrumentName = #'()
332 }
333
334 \context {
335   \type "Engraver_group"
336   \name "StaffGroup"
337
338   \consists "Vertical_align_engraver"
339   topLevelAlignment = ##f
340
341   \consists "Span_bar_engraver"
342   \consists "Span_arpeggio_engraver"
343   \consists "Output_property_engraver"
344   systemStartDelimiter = #'SystemStartBracket
345
346   \consists "System_start_delimiter_engraver"
347
348   \defaultchild "Staff"
349   \accepts "Staff"
350   \accepts "RhythmicStaff"
351   \accepts "DrumStaff"
352   \accepts "GrandStaff"
353   \accepts "PianoStaff"
354   \accepts "TabStaff"
355   \accepts "Lyrics"
356   \accepts "ChordNames"
357   \accepts "FiguredBass"
358   \accepts "ChoirStaff"
359   \accepts "StaffGroup"
360
361   \description "Groups staves while adding a bracket on the left
362 side, grouping the staves together.  The bar lines of the contained
363 staves are connected vertically.  @code{StaffGroup} only consists of
364 a collection of staves, with a bracket in front and spanning bar lines."
365 }
366
367 \context {
368   \type "Engraver_group"
369   \name Dynamics
370   \alias Voice
371   \consists "Output_property_engraver"
372   \consists "Bar_engraver"
373   \consists "Piano_pedal_engraver"
374   \consists "Script_engraver"
375   \consists "New_dynamic_engraver"
376   \consists "Dynamic_align_engraver"
377   \consists "Text_engraver"
378   \consists "Skip_event_swallow_translator"
379   \consists "Axis_group_engraver"
380
381   pedalSustainStrings = #'("Ped." "*Ped." "*")
382   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
383   \override VerticalAxisGroup #'staff-affinity = #CENTER
384   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5) (padding . 0.5))
385   \override TextScript #'font-shape = #'italic
386
387   \description "Holds a single line of dynamics, which will be
388 centered between the staves surrounding this context."
389 }
390
391
392 \context{
393   \type "Engraver_group"
394
395   \description "Corresponds to a voice with lyrics.  Handles the
396 printing of a single line of lyrics."
397
398   \name "Lyrics"
399   instrumentName = #'()
400   shortInstrumentName = #'()
401
402   \consists "Lyric_engraver"
403   \consists "Extender_engraver"
404   \consists "Hyphen_engraver"
405   \consists "Stanza_number_engraver"
406   \consists "Instrument_name_engraver"
407   \consists "Skip_event_swallow_translator"
408   \consists "Font_size_engraver"
409   \consists "Hara_kiri_engraver"
410
411   \override VerticalAxisGroup #'remove-first = ##t
412   \override VerticalAxisGroup #'remove-empty = ##t
413   \override VerticalAxisGroup #'staff-affinity = #UP
414   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5))
415   \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2))
416   \override VerticalAxisGroup #'non-affinity-spacing #'padding = #1.0
417   \override SeparationItem #'padding = #0.2
418   \override InstrumentName #'self-alignment-Y = ##f
419
420   %% sync with define-grobs.scm ;
421   \override InstrumentName #'font-size = #1.0
422
423   %% make sure that barlines aren't collapsed, when
424   %% Bar_engraver is there.
425   \override BarLine #'bar-size = #0.1
426
427 }
428
429 \context {
430   \type "Engraver_group"
431   \name NoteNames
432   \description "A context for printing the names of notes."
433   \consists "Axis_group_engraver"
434
435   % FIXME: not sure what the default should be here.
436   \override VerticalAxisGroup #'staff-affinity = #DOWN
437
438
439   \consists "Rest_swallow_translator"
440   \consists "Skip_event_swallow_translator"
441   \consists "Tie_engraver"
442   \consists "Note_name_engraver"
443   \consists "Separating_line_group_engraver"
444 }
445
446 \context {
447   \type "Engraver_group"
448   \name ChordNames
449   \description "Typesets chord names."
450
451   \consists "Rest_swallow_translator"
452   \consists "Output_property_engraver"
453   \consists "Separating_line_group_engraver"
454   \consists "Chord_name_engraver"
455   \consists "Skip_event_swallow_translator"
456   \consists "Hara_kiri_engraver"
457 %  \consists "Note_spacing_engraver"
458   \override VerticalAxisGroup #'remove-first = ##t
459   \override VerticalAxisGroup #'remove-empty = ##t
460   \override VerticalAxisGroup #'staff-affinity = #DOWN
461   \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
462   \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
463 }
464
465
466 RemoveEmptyStaffContext= \context {
467   \Staff
468   \remove "Axis_group_engraver"
469   \consists "Hara_kiri_engraver"
470   \override Beam #'auto-knee-gap = #'()
471   \override VerticalAxisGroup #'remove-empty = ##t
472 }
473
474 AncientRemoveEmptyStaffContext = \context {
475 %% why not add by default?
476
477   \RemoveEmptyStaffContext
478   \accepts "VaticanaVoice"
479   \accepts "GregorianTranscriptionVoice"
480   \accepts "MensuralVoice"
481 }
482
483 \context {
484   \type "Score_engraver"
485   \name "Score"
486
487   \description "This is the top level notation context.  No
488 other context can contain a @code{Score} context.  This context
489 handles the administration of time signatures.  It also makes sure
490 that items such as clefs, time signatures, and key-signatures are
491 aligned across staves.
492
493 You cannot explicitly instantiate a @code{Score} context (since it
494 is not contained in any other context).  It is instantiated
495 automatically when an output definition (a @code{\score} or
496 @code{\layout} block) is processed."
497
498   \consists "Paper_column_engraver"
499   \consists "Vertically_spaced_contexts_engraver"
500   \consists "Repeat_acknowledge_engraver"
501   \consists "Staff_collecting_engraver"
502
503   %% move the alias along with the engraver.
504
505   \consists "Timing_translator"
506   \consists "Default_bar_line_engraver"
507   \consists "Output_property_engraver"
508   \consists "System_start_delimiter_engraver"
509   \consists "Mark_engraver"
510   \consists "Volta_engraver"
511   \consists "Metronome_mark_engraver"
512   \consists "Break_align_engraver"
513   \consists "Spacing_engraver"
514   \consists "Grace_spacing_engraver"
515   \consists "Vertical_align_engraver"
516   \consists "Stanza_number_align_engraver"
517   \consists "Bar_number_engraver"
518   \consists "Parenthesis_engraver"
519
520   \defaultchild "Staff"
521
522   \accepts "FretBoards"
523   \accepts "Staff"
524   \accepts "RhythmicStaff"
525   \accepts "TabStaff"
526   \accepts "VaticanaStaff"
527   \accepts "GregorianTranscriptionStaff"
528   \accepts "MensuralStaff"
529   \accepts "StaffGroup"
530   \accepts "DrumStaff"
531   \accepts "Lyrics"
532   \accepts "ChordNames"
533   \accepts "GrandStaff"
534   \accepts "ChoirStaff"
535   \accepts "PianoStaff"
536   \accepts "Devnull"
537   \accepts "NoteNames"
538   \accepts "FiguredBass"
539
540
541   noteToFretFunction = #determine-frets
542   soloText = #"Solo"
543   soloIIText = #"Solo II"
544   aDueText = #"a2"
545   printPartCombineTexts = ##t
546   systemStartDelimiter =#'SystemStartBar
547
548   drumStyleTable = #drums-style
549
550   melismaBusyProperties = #default-melisma-properties
551   tieWaitForNote = ##f
552   clefGlyph = #"clefs.G"
553   clefPosition = #-2
554   middleCClefPosition = #-6
555   middleCPosition = #-6
556   firstClef = ##t
557
558   crescendoSpanner = #'hairpin
559   decrescendoSpanner = #'hairpin
560
561   defaultBarType = #"|"
562   doubleRepeatType = #":|:"
563   barNumberVisibility = #first-bar-number-invisible
564   automaticBars = ##t
565
566   explicitClefVisibility = #all-visible
567   explicitKeySignatureVisibility = #all-visible
568   implicitTimeSignatureVisibility = #end-of-line-invisible
569
570   repeatCountVisibility = #all-repeat-counts-visible
571
572   beamSettings = #default-beam-settings
573   autoBeaming = ##t
574   autoBeamCheck = #default-auto-beam-check
575   scriptDefinitions = #default-script-alist
576
577   pedalSustainStrings = #'("Ped." "*Ped." "*")
578   pedalSustainStyle = #'text
579   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
580   pedalUnaCordaStyle = #'text
581
582 %% These are in ordinary italic font, including the *,
583 %% but they are unlikely to be used,
584 %% as the default pedal-style for SostenutoPedal is 'mixed':
585 %% i.e.  Sost. Ped_____________________
586   pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
587   pedalSostenutoStyle = #'mixed
588
589   harmonicAccidentals = ##t
590   fingeringOrientations = #'(up down)
591   stringNumberOrientations = #'(up down)
592   strokeFingerOrientations = #'(right)
593
594   lyricMelismaAlignment = #LEFT
595   markFormatter = #format-mark-letters
596   rehearsalMark = #1
597   subdivideBeams = ##f
598   extraNatural = ##t
599   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
600   autoCautionaries = #'()
601
602   printKeyCancellation = ##t
603   keyAlterationOrder = #`(
604     (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
605     (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
606     (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
607     (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
608   )
609
610   barCheckSynchronize = ##f
611
612 %% chord names:
613   chordNameFunction = #ignatzek-chord-names
614   majorSevenSymbol = #whiteTriangleMarkup
615   chordNameSeparator = #(make-simple-markup  "/")
616   chordNameExceptions = #ignatzekExceptions
617   chordNoteNamer = #'()
618   chordRootNamer = #note-name->markup
619   chordPrefixSpacer = #0
620   chordNameExceptionsFull = #fullJazzExceptions
621   chordNameExceptionsPartial = #partialJazzExceptions
622   noChordSymbol = #(make-simple-markup "N.C.")
623
624   bassStaffProperties = #'((assign clefGlyph "clefs.F")
625   (assign clefPosition 2)
626   (assign middleCPosition 6)
627   (assign middleCClefPosition 6))
628 %% tablature:
629   stringOneTopmost = ##t
630   highStringOne = ##t
631
632 %% One may change the strings tuning as following :
633 %% The lenght of the list must be equal to the number of string
634   stringTunings = #guitar-tuning
635   tablatureFormat = #fret-number-tablature-format
636
637 %%
638   figuredBassFormatter = #format-bass-figure
639   metronomeMarkFormatter = #format-metronome-markup
640
641
642   %% See also make-voice-props-set
643   graceSettings = #`(
644     (Voice Stem direction ,UP)
645     (Voice Stem font-size -3)
646     (Voice NoteHead font-size -3)
647     (Voice TabNoteHead font-size -4)
648     (Voice Dots font-size -3)
649     (Voice Stem length-fraction 0.8)
650     (Voice Stem no-stem-extend #t)
651     (Voice Beam beam-thickness 0.384)
652     (Voice Beam length-fraction 0.8)
653     (Voice Accidental font-size -4)
654     (Voice AccidentalCautionary font-size -4)
655     (Voice Slur direction ,DOWN)
656     (Voice Script font-size -3)
657     (Voice Fingering font-size -8)
658     (Voice StringNumber font-size -8)
659   )
660
661   keepAliveInterfaces = #'(
662     rhythmic-grob-interface
663     lyric-interface
664     percent-repeat-item-interface
665     percent-repeat-interface
666
667     ;; need this, as stanza numbers are items, and appear only once.
668     stanza-number-interface
669   )
670   quotedEventTypes = #'(
671     note-event
672     rest-event
673     tie-event
674     beam-event
675     tuplet-span-event)
676   instrumentTransposition = #(ly:make-pitch 0 0 0)
677
678   verticallySpacedContexts = #'(Staff)
679   topLevelAlignment = ##t
680
681   timing = ##t
682 }
683
684
685
686
687 \context {
688   \type "Engraver_group"
689   \name "FiguredBass"
690   \description "A context for printing a figured bass line."
691
692   \consists "Figured_bass_engraver"
693   \consists "Note_swallow_translator"
694   \consists "Skip_event_swallow_translator"
695   \consists "Separating_line_group_engraver"
696   \consists "Hara_kiri_engraver"
697
698   \override VerticalAxisGroup #'remove-empty = ##t
699   \override VerticalAxisGroup #'remove-first = ##t
700   \override VerticalAxisGroup #'staff-affinity = #UP
701   \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
702   \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
703 }
704
705 \context {
706   \name "Devnull"
707   \type "Engraver_group"
708
709 %% don't want to route anything out of here:
710   \alias "Staff"
711   \alias "Voice"
712   \consists "Swallow_engraver"
713   \description "Silently discards all musical information given to this
714 context."
715 }
716
717 \context {
718   \Voice
719   \name "TabVoice"
720   \alias "Voice"
721   \consists "Tab_note_heads_engraver"
722   \consists "Tab_harmonic_engraver"
723
724   \remove "Note_heads_engraver"
725   \remove "Fingering_engraver"
726   \remove "New_fingering_engraver"
727
728   \description "Context for drawing notes in a Tab staff."
729
730   %% TabStaff increase the staff-space, which in turn
731   %% increases beam thickness and spacing; beams are
732   %% too big. We have to adjust the beam settings:
733   \override Beam #'beam-thickness = #0.32
734   \override Beam #'length-fraction = #0.62
735
736   %% No accidental in tablature !
737   \remove "Accidental_engraver"
738   %% make the Stems as short as possible to minimize their influence
739   %% on the slur::calc-control-points routine
740   \override Stem #'length = #0
741   \override Stem #'no-stem-extend = ##t
742   \override Stem #'flag-style = #'no-flag
743   \override Stem #'details = #'((lengths 0 0 0 0 0 0)
744                                 (beamed-lengths 0 0 0)
745                                 (beamed-minimum-free-lengths 0 0 0)
746                                 (beamed-extreme-minimum-free-lengths 0 0)
747                                 (stem-shorten 0 0))
748   %% after all, the stubs of the stems may still be visible, so ...
749   \override Stem #'transparent = ##t
750   %% automatic beams should be suppressed for similar reasons ...
751   autoBeaming = ##f
752   %% remove beams, dots and rests ...
753   \override Beam #'stencil = ##f
754   \override Dots #'stencil = ##f
755   \override Rest #'stencil = ##f
756   \override MultiMeasureRest #'stencil = ##f
757   \override MultiMeasureRestNumber #'transparent = ##t
758   %% ... all kinds of ties/slurs
759   \override Tie  #'stencil = ##f
760   \override RepeatTie #'stencil = ##f
761   \override LaissezVibrerTie #'stencil = ##f
762   \override Slur #'stencil = #slur::draw-tab-slur
763   \override PhrasingSlur #'stencil = ##f
764   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
765   \override Tie #'after-line-breaking = #tie::handle-tab-note-head
766   \override RepeatTie #'after-line-breaking = #repeat-tie::handle-tab-note-head
767   %% ... and all kinds of markups, spanners etc.
768   \override TupletBracket #'stencil = ##f
769   \override TupletNumber #'stencil = ##f
770   \override DynamicText #'transparent = ##t
771   \override DynamicTextSpanner #'stencil = ##f
772   \override TextSpanner #'stencil = ##f
773   \override Hairpin #'transparent = ##t
774   \override Script #'stencil = ##f
775   \override TextScript #'stencil = ##f
776   %% the direction for glissando lines will be automatically corrected
777   \override Glissando #'extra-dy = #glissando::calc-tab-extra-dy
778   \override Glissando #'bound-details #'right = #`((attach-dir . ,LEFT)
779                                                    (padding . 0.3))
780   \override Glissando #'bound-details #'left = #`((attach-dir . ,RIGHT)
781                                                    (padding . 0.3))
782   %% dead notes
783   \override TabNoteHead #'glyph-name = #tab-note-head::calc-glyph-name
784   \override TabNoteHead #'stencil = #tab-note-head::whiteout-if-style-set
785 }
786
787 \context {
788   \Staff
789   \alias "Staff"
790   \name "TabStaff"
791   \denies "Voice"
792   \consists "Tab_staff_symbol_engraver"
793
794   \description "Context for generating tablature. It accepts only @code{TabVoice}
795 contexts and handles the line spacing, the tablature clef etc. properly."
796
797   \accepts "TabVoice"
798   \defaultchild "TabVoice"
799
800   %% 6 strings, bigger spacing
801   \override StaffSymbol #'staff-space = #1.5
802
803   %% Don't draw stems over the tablature figures !
804   \override Stem #'avoid-note-head = ##t
805
806   %% No accidental in tablature !
807   \remove "Accidental_engraver"
808   \remove "Key_engraver"
809
810   \remove "String_number_engraver"
811   \remove "Ottava_spanner_engraver"
812   %% the clef handler
813   \override Clef #'stencil = #clef::print-modern-tab-if-set
814   %% no time signature
815   \override TimeSignature #'stencil = ##f
816   %% better parentheses in a TabStaff
817   \override ParenthesesItem #'stencils = #parentheses-item::calc-tabstaff-parenthesis-stencils
818   %% no arpeggios
819   \override Arpeggio #'stencil = ##f
820   %% we ignore collision warnings that may occur due to
821   %% stem overlapping, because we have no stems ;-)
822   \override NoteColumn #'ignore-collision = ##t
823   %% Special "TAB" clef
824   clefGlyph = #"clefs.tab"
825   clefPosition = #0
826 }
827
828 \context {
829   \Voice
830   \name "VaticanaVoice"
831   \alias "Voice"
832   \description "Same as @code{Voice} context, except that it is
833 accommodated for typesetting Gregorian Chant in the notational style
834 of Editio Vaticana."
835
836   \remove "Slur_engraver"
837   \remove "Stem_engraver"
838   \remove "Ligature_bracket_engraver"
839   \consists "Vaticana_ligature_engraver"
840
841   %% Set default head for notes outside of \[ \].
842   \override NoteHead #'style = #'vaticana.punctum
843
844   %% Put some space before and after divisiones.
845   %% FIXME: This does not seem to show any effect.
846   \override Script #'padding = #0.5
847
848   %% There are no beams in Gregorian Chant notation.
849   autoBeaming = ##f
850
851   %% Prepare TextSpanner for \episem{Initium|Finis} use.
852   %%
853   %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
854   %% required to force the articulation signs being placed vertically
855   %% tightly to the correpsonding note heads.
856   %%
857   \override TextSpanner #'style = #'line
858   \override TextSpanner #'padding = #-0.1
859 }
860
861 \context {
862   \Staff
863   \name "VaticanaStaff"
864   \alias "Staff"
865   \denies "Voice"
866   \accepts "VaticanaVoice"
867   \defaultchild "VaticanaVoice"
868
869   \description "Same as @code{Staff} context, except that it is
870 accommodated for typesetting Gregorian Chant in the notational style
871 of Editio Vaticana."
872
873   \remove "Time_signature_engraver"
874   \consists "Custos_engraver"
875
876   %% We can not remove Bar_engraver; otherwise clefs and custodes will
877   %% not show up any more among other line breaking issues.
878   %% Instead, we make the grob transparent.
879   \override BarLine #'transparent = ##t
880
881   \override StaffSymbol #'line-count = #4
882   \override StaffSymbol #'thickness = #0.6
883
884   %% FIXME: unit on StaffSymbol's width should be \linewidth.
885   %% \override StaffSymbol #'width = #60.0
886
887   %% Choose vaticana do clef on 3rd line as default.
888   clefGlyph = #"clefs.vaticana.do"
889   middleCPosition = #1
890   middleCClefPosition = #1
891   clefPosition = #1
892   clefOctavation = #0
893
894   %% Select vaticana style font.
895   \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
896   \override Accidental #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
897   \override Custos #'style = #'vaticana
898   \override Custos #'neutral-position = #3
899   \override Custos #'neutral-direction = #DOWN
900   \override Dots #'style = #'vaticana
901 }
902
903 \context {
904   \Voice
905   \name "GregorianTranscriptionVoice"
906   \alias "Voice"
907
908   %% Removing ligature bracket engraver without replacing it by some
909   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
910   %% warning for every "\[" and "\]".  Therefore, we make the grob
911   %% transparent instead.
912   \override LigatureBracket #'transparent = ##t
913
914   %% Put some space before and after divisiones.
915   %% FIXME: This does not seem to show any effect.
916   \override Script #'padding = #0.5
917
918   %% There are no beams in Gregorian Chant notation.
919   autoBeaming = ##f
920
921   %% Prepare TextSpanner for \episem{Initium|Finis} use.
922   %%
923   %% N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
924   %% always produce dashed lines, regardless of the style property.
925   %%
926   %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
927   %% required to force the articulation signs being placed vertically
928   %% tightly to the correpsonding note heads.
929   %%
930   \override TextSpanner #'dash-fraction = #'()
931   \override TextSpanner #'style = #'line
932   \override TextSpanner #'padding = #-0.1
933 }
934
935 \context {
936   \Staff
937   \name "GregorianTranscriptionStaff"
938   \alias "Staff"
939   \denies "Voice"
940   \accepts "GregorianTranscriptionVoice"
941   \defaultchild "GregorianTranscriptionVoice"
942
943   %% We can not remove Bar_engraver; otherwise clefs and custodes will
944   %% not show up any more among other line breaking issues.
945   %% Instead, we make the grob transparent.
946   \override BarLine #'transparent = ##t
947 }
948
949 \context {
950   \Voice
951   \name "MensuralVoice"
952   \alias "Voice"
953   \description "Same as @code{Voice} context, except that it is
954 accommodated for typesetting a piece in mensural style."
955
956   \remove "Slur_engraver"
957   \remove "Ligature_bracket_engraver"
958   \consists "Mensural_ligature_engraver"
959
960   %% Set default head for notes outside of \[ \].
961   \override NoteHead #'style = #'mensural
962   \override Rest #'style = #'mensural
963
964   %% There are no beams in mensural notation.
965   autoBeaming = ##f
966 }
967
968 \context {
969   \Staff
970   \name "MensuralStaff"
971   \alias "Staff"
972   \denies "Voice"
973   \defaultchild "MensuralVoice"
974   \accepts "MensuralVoice"
975   \description "Same as @code{Staff} context, except that it is
976 accommodated for typesetting a piece in mensural style."
977
978   \consists "Custos_engraver"
979
980   %% We can not remove Bar_engraver; otherwise clefs and custodes will
981   %% not show up any more among other line breaking issues.
982   %% Instead, we make the grob transparent.
983   \override BarLine #'transparent = ##t
984
985   \override StaffSymbol #'thickness = #0.6
986
987   %% FIXME: unit on StaffSymbol's width should be \linewidth.
988   %% \override StaffSymbol #'width = #60.0
989
990   %% Choose mensural g clef on 2nd line as default.
991   clefGlyph = #"clefs.mensural.g"
992   middleCClefPosition = #-6
993   middleCPosition = #-6
994   clefPosition = #-2
995   clefOctavation = #0
996
997   %% Select mensural style font.
998   \override TimeSignature #'style = #'mensural
999   \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist
1000   \override Accidental #'glyph-name-alist = #alteration-mensural-glyph-name-alist
1001   \override Custos #'style = #'mensural
1002   \override Custos #'neutral-position = #3
1003   \override Custos #'neutral-direction = #DOWN
1004
1005   %% Accidentals are valid only once (same as
1006   %% #(set-accidental-style 'forget))
1007   extraNatural = ##f
1008   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1009   autoCautionaries = #'()
1010   printKeyCancellation = ##f
1011 }
1012
1013
1014 RemoveEmptyRhythmicStaffContext= \context {
1015   \RhythmicStaff
1016   \remove "Axis_group_engraver"
1017   \override VerticalAxisGroup #'remove-empty = ##t
1018   \consists "Hara_kiri_engraver"
1019 }