]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
tablature: fix problems with MultiMeasureRestNumber
[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 "Piano_pedal_engraver"
354   \consists "Script_engraver"
355   \consists "New_dynamic_engraver"
356   \consists "Dynamic_align_engraver"
357   \consists "Text_engraver"
358   \consists "Skip_event_swallow_translator"
359   \consists "Axis_group_engraver"
360
361   pedalSustainStrings = #'("Ped." "*Ped." "*")
362   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
363   \override VerticalAxisGroup #'staff-affinity = #CENTER
364   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5) (padding . 0.5))
365   \override TextScript #'font-shape = #'italic
366
367   \description "Holds a single line of dynamics, which will be
368 centered between the staves surrounding this context."
369 }
370
371
372 \context{
373   \type "Engraver_group"
374
375   \description "Corresponds to a voice with lyrics.  Handles the
376 printing of a single line of lyrics."
377
378   \name "Lyrics"
379   instrumentName = #'()
380   shortInstrumentName = #'()
381
382   \consists "Lyric_engraver"
383   \consists "Extender_engraver"
384   \consists "Hyphen_engraver"
385   \consists "Stanza_number_engraver"
386   \consists "Instrument_name_engraver"
387   \consists "Skip_event_swallow_translator"
388   \consists "Font_size_engraver"
389   \consists "Hara_kiri_engraver"
390
391   \override VerticalAxisGroup #'remove-first = ##t
392   \override VerticalAxisGroup #'remove-empty = ##t
393   \override VerticalAxisGroup #'staff-affinity = #UP
394   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5))
395   \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2))
396   \override VerticalAxisGroup #'non-affinity-spacing #'padding = #1.0
397   \override SeparationItem #'padding = #0.2
398   \override InstrumentName #'self-alignment-Y = ##f
399
400   %% sync with define-grobs.scm ;
401   \override InstrumentName #'font-size = #1.0
402
403   %% make sure that barlines aren't collapsed, when
404   %% Bar_engraver is there.
405   \override BarLine #'bar-size = #0.1
406
407 }
408
409 \context {
410   \type "Engraver_group"
411   \name NoteNames
412   \description "A context for printing the names of notes."
413   \consists "Axis_group_engraver"
414
415   % FIXME: not sure what the default should be here.
416   \override VerticalAxisGroup #'staff-affinity = #DOWN
417
418
419   \consists "Rest_swallow_translator"
420   \consists "Skip_event_swallow_translator"
421   \consists "Tie_engraver"
422   \consists "Note_name_engraver"
423   \consists "Separating_line_group_engraver"
424 }
425
426 \context {
427   \type "Engraver_group"
428   \name ChordNames
429   \description "Typesets chord names."
430
431   \consists "Rest_swallow_translator"
432   \consists "Output_property_engraver"
433   \consists "Separating_line_group_engraver"
434   \consists "Chord_name_engraver"
435   \consists "Skip_event_swallow_translator"
436   \consists "Hara_kiri_engraver"
437 %  \consists "Note_spacing_engraver"
438   \override VerticalAxisGroup #'remove-first = ##t
439   \override VerticalAxisGroup #'remove-empty = ##t
440   \override VerticalAxisGroup #'staff-affinity = #DOWN
441   \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
442   \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
443 }
444
445
446 RemoveEmptyStaffContext= \context {
447   \Staff
448   \remove "Axis_group_engraver"
449   \consists "Hara_kiri_engraver"
450   \override Beam #'auto-knee-gap = #'()
451   \override VerticalAxisGroup #'remove-empty = ##t
452 }
453
454 AncientRemoveEmptyStaffContext = \context {
455 %% why not add by default?
456
457   \RemoveEmptyStaffContext
458   \accepts "VaticanaVoice"
459   \accepts "GregorianTranscriptionVoice"
460   \accepts "MensuralVoice"
461 }
462
463 \context {
464   \type "Score_engraver"
465   \name "Score"
466
467   \description "This is the top level notation context.  No
468 other context can contain a @code{Score} context.  This context
469 handles the administration of time signatures.  It also makes sure
470 that items such as clefs, time signatures, and key-signatures are
471 aligned across staves.
472
473 You cannot explicitly instantiate a @code{Score} context (since it
474 is not contained in any other context).  It is instantiated
475 automatically when an output definition (a @code{\score} or
476 @code{\layout} block) is processed."
477
478   \consists "Paper_column_engraver"
479   \consists "Vertically_spaced_contexts_engraver"
480   \consists "Repeat_acknowledge_engraver"
481   \consists "Staff_collecting_engraver"
482
483   %% move the alias along with the engraver.
484
485   \consists "Timing_translator"
486   \consists "Default_bar_line_engraver"
487   \consists "Output_property_engraver"
488   \consists "System_start_delimiter_engraver"
489   \consists "Mark_engraver"
490   \consists "Volta_engraver"
491   \consists "Metronome_mark_engraver"
492   \consists "Break_align_engraver"
493   \consists "Spacing_engraver"
494   \consists "Grace_spacing_engraver"
495   \consists "Vertical_align_engraver"
496   \consists "Stanza_number_align_engraver"
497   \consists "Bar_number_engraver"
498   \consists "Parenthesis_engraver"
499
500   \defaultchild "Staff"
501
502   \accepts "FretBoards"
503   \accepts "Staff"
504   \accepts "RhythmicStaff"
505   \accepts "TabStaff"
506   \accepts "VaticanaStaff"
507   \accepts "GregorianTranscriptionStaff"
508   \accepts "MensuralStaff"
509   \accepts "StaffGroup"
510   \accepts "DrumStaff"
511   \accepts "Lyrics"
512   \accepts "ChordNames"
513   \accepts "GrandStaff"
514   \accepts "ChoirStaff"
515   \accepts "PianoStaff"
516   \accepts "Devnull"
517   \accepts "NoteNames"
518   \accepts "FiguredBass"
519
520
521   noteToFretFunction = #determine-frets
522   soloText = #"Solo"
523   soloIIText = #"Solo II"
524   aDueText = #"a2"
525   printPartCombineTexts = ##t
526   systemStartDelimiter =#'SystemStartBar
527
528   drumStyleTable = #drums-style
529
530   melismaBusyProperties = #default-melisma-properties
531   tieWaitForNote = ##f
532   clefGlyph = #"clefs.G"
533   clefPosition = #-2
534   middleCClefPosition = #-6
535   middleCPosition = #-6
536   firstClef = ##t
537
538   crescendoSpanner = #'hairpin
539   decrescendoSpanner = #'hairpin
540
541   defaultBarType = #"|"
542   doubleRepeatType = #":|:"
543   barNumberVisibility = #first-bar-number-invisible
544   automaticBars = ##t
545
546   explicitClefVisibility = #all-visible
547   explicitKeySignatureVisibility = #all-visible
548   implicitTimeSignatureVisibility = #end-of-line-invisible
549
550   repeatCountVisibility = #all-repeat-counts-visible
551
552   beamSettings = #default-beam-settings
553   autoBeaming = ##t
554   autoBeamCheck = #default-auto-beam-check
555   scriptDefinitions = #default-script-alist
556
557   pedalSustainStrings = #'("Ped." "*Ped." "*")
558   pedalSustainStyle = #'text
559   pedalUnaCordaStrings = #'("una corda" "" "tre corde")
560   pedalUnaCordaStyle = #'text
561
562 %% These are in ordinary italic font, including the *,
563 %% but they are unlikely to be used,
564 %% as the default pedal-style for SostenutoPedal is 'mixed':
565 %% i.e.  Sost. Ped_____________________
566   pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
567   pedalSostenutoStyle = #'mixed
568
569   harmonicAccidentals = ##t
570   fingeringOrientations = #'(up down)
571   stringNumberOrientations = #'(up down)
572   strokeFingerOrientations = #'(right)
573
574   lyricMelismaAlignment = #LEFT
575   markFormatter = #format-mark-letters
576   rehearsalMark = #1
577   subdivideBeams = ##f
578   extraNatural = ##t
579   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
580   autoCautionaries = #'()
581
582   printKeyCancellation = ##t
583   keyAlterationOrder = #`(
584     (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
585     (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
586     (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
587     (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
588   )
589
590   barCheckSynchronize = ##f
591
592 %% chord names:
593   chordNameFunction = #ignatzek-chord-names
594   majorSevenSymbol = #whiteTriangleMarkup
595   chordNameSeparator = #(make-simple-markup  "/")
596   chordNameExceptions = #ignatzekExceptions
597   chordNoteNamer = #'()
598   chordRootNamer = #note-name->markup
599   chordPrefixSpacer = #0
600   chordNameExceptionsFull = #fullJazzExceptions
601   chordNameExceptionsPartial = #partialJazzExceptions
602   noChordSymbol = #(make-simple-markup "N.C.")
603
604   bassStaffProperties = #'((assign clefGlyph "clefs.F")
605   (assign clefPosition 2)
606   (assign middleCPosition 6)
607   (assign middleCClefPosition 6))
608 %% tablature:
609   stringOneTopmost = ##t
610   highStringOne = ##t
611
612 %% One may change the strings tuning as following :
613 %% The lenght of the list must be equal to the number of string
614   stringTunings = #guitar-tuning
615   tablatureFormat = #fret-number-tablature-format
616
617 %%
618   figuredBassFormatter = #format-bass-figure
619   metronomeMarkFormatter = #format-metronome-markup
620
621
622   %% See also make-voice-props-set
623   graceSettings = #`(
624     (Voice Stem direction ,UP)
625     (Voice Stem font-size -3)
626     (Voice NoteHead font-size -3)
627     (Voice TabNoteHead font-size -4)
628     (Voice Dots font-size -3)
629     (Voice Stem length-fraction 0.8)
630     (Voice Stem no-stem-extend #t)
631     (Voice Beam beam-thickness 0.384)
632     (Voice Beam length-fraction 0.8)
633     (Voice Accidental font-size -4)
634     (Voice AccidentalCautionary font-size -4)
635     (Voice Slur direction ,DOWN)
636     (Voice Script font-size -3)
637     (Voice Fingering font-size -8)
638     (Voice StringNumber font-size -8)
639   )
640
641   keepAliveInterfaces = #'(
642     rhythmic-grob-interface
643     lyric-interface
644     percent-repeat-item-interface
645     percent-repeat-interface
646
647     ;; need this, as stanza numbers are items, and appear only once.
648     stanza-number-interface
649   )
650   quotedEventTypes = #'(
651     note-event
652     rest-event
653     tie-event
654     beam-event
655     tuplet-span-event)
656   instrumentTransposition = #(ly:make-pitch 0 0 0)
657
658   verticallySpacedContexts = #'(Staff)
659   topLevelAlignment = ##t
660
661   timing = ##t
662 }
663
664
665
666
667 \context {
668   \type "Engraver_group"
669   \name "FiguredBass"
670   \description "A context for printing a figured bass line."
671
672   \consists "Figured_bass_engraver"
673   \consists "Note_swallow_translator"
674   \consists "Skip_event_swallow_translator"
675   \consists "Separating_line_group_engraver"
676   \consists "Hara_kiri_engraver"
677
678   \override VerticalAxisGroup #'remove-empty = ##t
679   \override VerticalAxisGroup #'remove-first = ##t
680   \override VerticalAxisGroup #'staff-affinity = #UP
681   \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
682   \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
683 }
684
685 \context {
686   \name "Devnull"
687   \type "Engraver_group"
688
689 %% don't want to route anything out of here:
690   \alias "Staff"
691   \alias "Voice"
692   \consists "Swallow_engraver"
693   \description "Silently discards all musical information given to this
694 context."
695 }
696
697 \context {
698   \Voice
699   \name "TabVoice"
700   \alias "Voice"
701   \consists "Tab_note_heads_engraver"
702   \consists "Tab_harmonic_engraver"
703
704   \remove "Note_heads_engraver"
705   \remove "Fingering_engraver"
706   \remove "New_fingering_engraver"
707
708   \description "Context for drawing notes in a Tab staff."
709
710   %% TabStaff increase the staff-space, which in turn
711   %% increases beam thickness and spacing; beams are
712   %% too big. We have to adjust the beam settings:
713   \override Beam #'beam-thickness = #0.32
714   \override Beam #'length-fraction = #0.62
715
716   %% No accidental in tablature !
717   \remove "Accidental_engraver"
718   %% make the Stems as short as possible to minimize their influence 
719   %% on the slur::calc-control-points routine
720   \override Stem #'length = #0
721   \override Stem #'no-stem-extend = ##t
722   \override Stem #'flag-style = #'no-flag
723   \override Stem #'details = #'((lengths 0 0 0 0 0 0)
724                                 (beamed-lengths 0 0 0)
725                                 (beamed-minimum-free-lengths 0 0 0)
726                                 (beamed-extreme-minimum-free-lengths 0 0)
727                                 (stem-shorten 0 0))
728   %% after all, the stubs of the stems may still be visible, so ...
729   \override Stem #'transparent = ##t
730   %% automatic beams should be suppressed for similar reasons ...
731   autoBeaming = ##f
732   %% remove beams, dots and rests ...
733   \override Beam #'stencil = ##f
734   \override Dots #'stencil = ##f
735   \override Rest #'stencil = ##f
736   \override MultiMeasureRest #'stencil = ##f
737   \override MultiMeasureRestNumber #'transparent = ##t
738   %% ... all kinds of ties/slurs
739   \override Tie  #'stencil = ##f
740   \override RepeatTie #'stencil = ##f
741   \override LaissezVibrerTie #'stencil = ##f
742   \override Slur #'stencil = #slur::draw-tab-slur
743   \override PhrasingSlur #'stencil = ##f
744   %% 'tied to' fret numbers become invisible or parenthesized, respectively)
745   \override Tie #'after-line-breaking = #tie::handle-tab-note-head
746   \override RepeatTie #'after-line-breaking = #repeat-tie::handle-tab-note-head
747   %% ... and all kinds of markups, spanners etc.
748   \override TupletBracket #'stencil = ##f
749   \override TupletNumber #'stencil = ##f
750   \override DynamicText #'transparent = ##t
751   \override DynamicTextSpanner #'stencil = ##f
752   \override TextSpanner #'stencil = ##f
753   \override Hairpin #'transparent = ##t
754   \override Script #'stencil = ##f
755   \override TextScript #'stencil = ##f
756   %% the direction for glissando lines will be automatically corrected
757   \override Glissando #'extra-dy = #glissando::calc-tab-extra-dy
758   \override Glissando #'bound-details #'right = #`((attach-dir . ,LEFT)
759                                                    (padding . 0.3))
760   \override Glissando #'bound-details #'left = #`((attach-dir . ,RIGHT)
761                                                    (padding . 0.3))
762   %% dead notes
763   \override TabNoteHead #'glyph-name = #tab-note-head::calc-glyph-name
764   \override TabNoteHead #'stencil = #tab-note-head::whiteout-if-style-set
765 }
766
767 \context {
768   \Staff
769   \alias "Staff"
770   \name "TabStaff"
771   \denies "Voice"
772   \consists "Tab_staff_symbol_engraver"
773
774   \description "Context for generating tablature. [DOCME]"
775
776   \accepts "TabVoice"
777   \defaultchild "TabVoice"
778
779   %% 6 strings
780   \override StaffSymbol #'staff-space = #1.5
781
782   %% Don't draw stems over the tablature figures !
783   \override Stem #'avoid-note-head = ##t
784
785   %% No accidental in tablature !
786   \remove "Accidental_engraver"
787   \remove "Key_engraver"
788   \remove "String_number_engraver"
789   %% the clef handler
790   \override Clef #'stencil = #clef::print-modern-tab-if-set
791   %% no time signature
792   \override TimeSignature #'stencil = ##f
793   %% better parentheses in a TabStaff
794   \override ParenthesesItem #'stencils = #parentheses-item::calc-tabstaff-parenthesis-stencils
795   %% no arpeggios
796   \override Arpeggio #'stencil = ##f
797   %% we ignore collision warnings that may occur due to
798   %% stem overlapping, because we have no stems ;-)
799   \override NoteColumn #'ignore-collision = ##t
800   %% Special "TAB" clef
801   clefGlyph = #"clefs.tab"
802   clefPosition = #0
803 }
804
805 \context {
806   \Voice
807   \name "VaticanaVoice"
808   \alias "Voice"
809   \description "Same as @code{Voice} context, except that it is
810 accommodated for typesetting Gregorian Chant in the notational style
811 of Editio Vaticana."
812
813   \remove "Slur_engraver"
814   \remove "Stem_engraver"
815   \remove "Ligature_bracket_engraver"
816   \consists "Vaticana_ligature_engraver"
817
818   %% Set default head for notes outside of \[ \].
819   \override NoteHead #'style = #'vaticana.punctum
820
821   %% Put some space before and after divisiones.
822   %% FIXME: This does not seem to show any effect.
823   \override Script #'padding = #0.5
824
825   %% There are no beams in Gregorian Chant notation.
826   autoBeaming = ##f
827
828   %% Prepare TextSpanner for \episem{Initium|Finis} use.
829   %%
830   %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
831   %% required to force the articulation signs being placed vertically
832   %% tightly to the correpsonding note heads.
833   %%
834   \override TextSpanner #'style = #'line
835   \override TextSpanner #'padding = #-0.1
836 }
837
838 \context {
839   \Staff
840   \name "VaticanaStaff"
841   \alias "Staff"
842   \denies "Voice"
843   \accepts "VaticanaVoice"
844   \defaultchild "VaticanaVoice"
845
846   \description "Same as @code{Staff} context, except that it is
847 accommodated for typesetting Gregorian Chant in the notational style
848 of Editio Vaticana."
849
850   \remove "Time_signature_engraver"
851   \consists "Custos_engraver"
852
853   %% We can not remove Bar_engraver; otherwise clefs and custodes will
854   %% not show up any more among other line breaking issues.
855   %% Instead, we make the grob transparent.
856   \override BarLine #'transparent = ##t
857
858   \override StaffSymbol #'line-count = #4
859   \override StaffSymbol #'thickness = #0.6
860
861   %% FIXME: unit on StaffSymbol's width should be \linewidth.
862   %% \override StaffSymbol #'width = #60.0
863
864   %% Choose vaticana do clef on 3rd line as default.
865   clefGlyph = #"clefs.vaticana.do"
866   middleCPosition = #1
867   middleCClefPosition = #1
868   clefPosition = #1
869   clefOctavation = #0
870
871   %% Select vaticana style font.
872   \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
873   \override Accidental #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
874   \override Custos #'style = #'vaticana
875   \override Custos #'neutral-position = #3
876   \override Custos #'neutral-direction = #DOWN
877   \override Dots #'style = #'vaticana
878 }
879
880 \context {
881   \Voice
882   \name "GregorianTranscriptionVoice"
883   \alias "Voice"
884
885   %% Removing ligature bracket engraver without replacing it by some
886   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
887   %% warning for every "\[" and "\]".  Therefore, we make the grob
888   %% transparent instead.
889   \override LigatureBracket #'transparent = ##t
890
891   %% Put some space before and after divisiones.
892   %% FIXME: This does not seem to show any effect.
893   \override Script #'padding = #0.5
894
895   %% There are no beams in Gregorian Chant notation.
896   autoBeaming = ##f
897
898   %% Prepare TextSpanner for \episem{Initium|Finis} use.
899   %%
900   %% N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
901   %% always produce dashed lines, regardless of the style property.
902   %%
903   %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
904   %% required to force the articulation signs being placed vertically
905   %% tightly to the correpsonding note heads.
906   %%
907   \override TextSpanner #'dash-fraction = #'()
908   \override TextSpanner #'style = #'line
909   \override TextSpanner #'padding = #-0.1
910 }
911
912 \context {
913   \Staff
914   \name "GregorianTranscriptionStaff"
915   \alias "Staff"
916   \denies "Voice"
917   \accepts "GregorianTranscriptionVoice"
918   \defaultchild "GregorianTranscriptionVoice"
919
920   %% We can not remove Bar_engraver; otherwise clefs and custodes will
921   %% not show up any more among other line breaking issues.
922   %% Instead, we make the grob transparent.
923   \override BarLine #'transparent = ##t
924 }
925
926 \context {
927   \Voice
928   \name "MensuralVoice"
929   \alias "Voice"
930   \description "Same as @code{Voice} context, except that it is
931 accommodated for typesetting a piece in mensural style."
932
933   \remove "Slur_engraver"
934   \remove "Ligature_bracket_engraver"
935   \consists "Mensural_ligature_engraver"
936
937   %% Set default head for notes outside of \[ \].
938   \override NoteHead #'style = #'mensural
939   \override Rest #'style = #'mensural
940
941   %% There are no beams in mensural notation.
942   autoBeaming = ##f
943 }
944
945 \context {
946   \Staff
947   \name "MensuralStaff"
948   \alias "Staff"
949   \denies "Voice"
950   \defaultchild "MensuralVoice"
951   \accepts "MensuralVoice"
952   \description "Same as @code{Staff} context, except that it is
953 accommodated for typesetting a piece in mensural style."
954
955   \consists "Custos_engraver"
956
957   %% We can not remove Bar_engraver; otherwise clefs and custodes will
958   %% not show up any more among other line breaking issues.
959   %% Instead, we make the grob transparent.
960   \override BarLine #'transparent = ##t
961
962   \override StaffSymbol #'thickness = #0.6
963
964   %% FIXME: unit on StaffSymbol's width should be \linewidth.
965   %% \override StaffSymbol #'width = #60.0
966
967   %% Choose mensural g clef on 2nd line as default.
968   clefGlyph = #"clefs.mensural.g"
969   middleCClefPosition = #-6
970   middleCPosition = #-6
971   clefPosition = #-2
972   clefOctavation = #0
973
974   %% Select mensural style font.
975   \override TimeSignature #'style = #'mensural
976   \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist
977   \override Accidental #'glyph-name-alist = #alteration-mensural-glyph-name-alist
978   \override Custos #'style = #'mensural
979   \override Custos #'neutral-position = #3
980   \override Custos #'neutral-direction = #DOWN
981
982   %% Accidentals are valid only once (same as
983   %% #(set-accidental-style 'forget))
984   extraNatural = ##f
985   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
986   autoCautionaries = #'()
987   printKeyCancellation = ##f
988 }
989
990
991 RemoveEmptyRhythmicStaffContext= \context {
992   \RhythmicStaff
993   \remove "Axis_group_engraver"
994   \override VerticalAxisGroup #'remove-empty = ##t
995   \consists "Hara_kiri_engraver"
996 }