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