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