]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
Further development.
[lilypond.git] / ly / engraver-init.ly
1 \version "1.9.8"
2
3
4 %
5 % setup for Request->Element conversion. Guru-only
6 %
7
8 \translator {
9         \type "Engraver_group_engraver"
10         \name Staff
11
12         \description "Handles clefs, bar lines, keys, accidentals.  It can contain
13 @code{Voice} contexts."
14
15         
16         \consists "Output_property_engraver"    
17         
18         \consists "Bar_engraver"
19 % Bar_engraver must be first so default bars aren't overwritten
20 % with empty ones.
21         \consists "Font_size_engraver"
22
23 %       \consists "Repeat_engraver"
24         \consists "Volta_engraver"
25         \consists "Separating_line_group_engraver"      
26         SeparatingGroupSpanner \override #'spacing-procedure
27           =  #Separating_group_spanner::set_spacing_rods_and_seqs
28         \consists "Dot_column_engraver"
29
30         % perhaps move to Voice context?
31         \consists "Ottava_spanner_engraver"
32         \consists "Clef_engraver"
33         \consists "Key_engraver"
34         \consists "Time_signature_engraver"
35         \consists "Staff_symbol_engraver"
36         \consists "Collision_engraver"
37         \consists "Rest_collision_engraver"
38         \consists "Accidental_engraver"
39         \consists "Piano_pedal_engraver"
40         \consists "Instrument_name_engraver"
41         \consists "Grob_pq_engraver"
42         \consists "Forbid_line_break_engraver"
43         \consists "String_number_engraver"
44         \consistsend "Axis_group_engraver"
45
46         minimumVerticalExtent = #'(-6 . 6)
47         extraVerticalExtent = ##f
48         verticalExtent = ##f 
49         localKeySignature = #'()
50
51         % explicitly set instrument, so we don't get 
52         % weird effects when doing instrument names for
53         % piano staves
54
55         instrument = #'()
56         instr = #'()
57           
58         \accepts "Voice"
59 }
60
61
62 \translator {
63         \type Engraver_group_engraver
64         \consists "Axis_group_engraver"
65         minimumVerticalExtent = ##f
66         extraVerticalExtent = ##f
67         verticalExtent = ##f 
68         localKeySignature = #'()
69
70         \accepts Staff
71         \name StaffContainer
72 }
73
74 \translator {
75         \type "Engraver_group_engraver"
76         \name InnerChoirStaff
77         \consists "System_start_delimiter_engraver"
78         systemStartDelimiter = #'SystemStartBracket
79         localKeySignature = #'()
80
81         \accepts "Staff"
82         \accepts "RhythmicStaff"
83         \accepts "GrandStaff"
84         \accepts "PianoStaff"
85         \accepts "Lyrics"
86         \accepts "ChordNames"
87 }
88
89 \translator {
90         \InnerChoirStaffContext
91         \name ChoirStaff
92         
93         \description "Identical to @code{StaffGroup} except that the
94     contained staves are not connected vertically."
95         
96         \accepts "InnerChoirStaff"
97         \accepts "InnerStaffGroup"
98 }
99
100
101 \translator{
102         \type "Engraver_group_engraver"
103         
104         \consists "Output_property_engraver"    
105
106 \description  "
107     A context like @code{Staff} but for printing rhythms.  Pitches are
108     ignored; the notes are printed on one line.  
109 "
110         minimumVerticalExtent = ##f
111         extraVerticalExtent = ##f
112         verticalExtent = ##f 
113         localKeySignature = #'()
114
115         \consists "Pitch_squash_engraver"
116         \consists "Separating_line_group_engraver"      
117         \name RhythmicStaff
118         \alias "Staff"
119         
120         BarLine \override #'bar-size = #4
121         VoltaBracket \override #'minimum-space =  #15
122         VoltaBracket \override #'padding =  #5
123         StaffSymbol \override #'line-count = #1 
124
125         Stem \override #'neutral-direction = #1
126         Beam \override #'neutral-direction = #1         
127 %       \consists "Repeat_engraver"
128         \consists "Dot_column_engraver"
129         \consists "Volta_engraver"
130         \consists "Bar_engraver"
131         \consists "Time_signature_engraver"
132         \consists "Staff_symbol_engraver"
133         \consists "Instrument_name_engraver"
134         \consistsend "Axis_group_engraver"
135         \accepts "Voice"
136 }
137
138
139 \translator {
140         \type "Engraver_group_engraver"
141         \name Voice
142
143 \description "
144     Corresponds to a voice on a staff.  This context handles the
145     conversion of dynamic signs, stems, beams, super- and subscripts,
146     slurs, ties, and rests.
147
148     You have to instantiate this explicitly if you want to have
149     multiple voices on the same staff."
150
151         localKeySignature = #'()
152         \consists "Font_size_engraver"
153         
154         % must come before all
155         \consists "Voice_devnull_engraver"
156         \consists "Output_property_engraver"    
157         \consists "Arpeggio_engraver"
158         \consists "Multi_measure_rest_engraver"
159         \consists "Text_spanner_engraver"
160         \consists "Grob_pq_engraver"
161
162         \consists "Note_head_line_engraver"
163         \consists "Glissando_engraver"
164         \consists "Ligature_bracket_engraver"
165         \consists "Breathing_sign_engraver"
166         % \consists "Rest_engraver"
167         \consists "Stem_engraver"
168         \consists "Beam_engraver"
169         \consists "Grace_beam_engraver"
170         \consists "Auto_beam_engraver"
171         \consists "New_fingering_engraver"
172         \consists "Chord_tremolo_engraver"
173         \consists "Percent_repeat_engraver"
174         \consists "Slash_repeat_engraver"
175         \consists "Melisma_engraver"
176
177 %{
178  Must come before text_engraver, but after note_column engraver.
179
180 %}
181         \consists "Text_engraver"
182         \consists "Dynamic_engraver"
183         \consists "Fingering_engraver"
184
185         \consists "Script_engraver"
186         \consists "Script_column_engraver"
187         \consists "Rhythmic_column_engraver"
188         \consists "Phrasing_slur_engraver"
189         \consists "Cluster_spanner_engraver"
190         \consists "Slur_engraver"
191         \consists "Tie_engraver"
192         \consists "Tuplet_engraver"
193         \consists "A2_engraver"
194
195         \consists "Skip_event_swallow_translator"
196         \accepts Thread % bug if you leave out this!
197 }
198
199 \translator{
200         \type Engraver_group_engraver
201         \name Thread
202         localKeySignature = #'()
203 \description "
204     Handles note heads, and is contained in the Voice context.  You
205     have to instantiate this explicitly if you want to adjust the
206     style of individual note heads.
207 "
208         \consists "Font_size_engraver"  
209         \consists "Thread_devnull_engraver"
210         \consists "Note_heads_engraver"
211         \consists "Rest_engraver"
212
213         % why here ? 
214         \consists "Output_property_engraver"    
215 }
216
217
218 \translator{
219         \type "Engraver_group_engraver"
220         \name GrandStaff
221         localKeySignature = #'()
222         
223         \description " A group of staffs, with a brace on the left
224     side, grouping the staves together.  The bar lines of the
225     contained staves are connected vertically.  "
226
227         \consists "Span_bar_engraver"
228         \consists "Span_arpeggio_engraver"
229         \consists "System_start_delimiter_engraver"
230         systemStartDelimiter = #'SystemStartBrace
231
232         \accepts "Staff"
233 }
234
235 \translator{
236         \GrandStaffContext
237         \name "PianoStaff"
238         \alias "GrandStaff"
239 \description "
240     Just like @code{GrandStaff} but with @code{minVerticalAlign} set
241     equal to @code{maxVerticalAlign} so that interstaff beaming and
242     slurring can be used."
243         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
244         VerticalAlignment \override #'forced-distance = #12
245         VerticalAlignment \override #'self-alignment-Y = #0
246
247         \consists "Vertical_align_engraver"
248         \consists "Instrument_name_engraver"
249         
250         instrument = #'()
251         instr = #'()
252         
253 %       \consistsend "Axis_group_engraver"
254 }
255
256 \translator {
257         \type "Engraver_group_engraver"
258         \name InnerStaffGroup
259         localKeySignature = #'()
260
261         \consists "Span_bar_engraver"
262         \consists "Span_arpeggio_engraver"
263         \consists "Output_property_engraver"    
264         systemStartDelimiter = #'SystemStartBracket
265
266         \consists "System_start_delimiter_engraver"
267         \accepts "Staff"
268         \accepts "RhythmicStaff"
269         \accepts "GrandStaff"
270         \accepts "PianoStaff"
271         \accepts "TabStaff"     
272         \accepts "Lyrics"
273         \accepts "ChordNames"
274 }
275
276 \translator {
277         \InnerStaffGroupContext
278         \name StaffGroup
279         
280         \description
281
282         " Groups staffs while adding a bracket on the left side,
283         grouping the staves together.  The bar lines of the contained
284         staves are connected vertically.
285 "
286         
287         \accepts "InnerChoirStaff"
288         \accepts "ChoirStaff"
289         \accepts "InnerStaffGroup"
290         \accepts "FiguredBass"
291 }
292
293
294 % UGH! JUNKME
295 \translator{
296         \type "Engraver_group_engraver"
297         \consistsend "Hara_kiri_engraver"
298         minimumVerticalExtent = #'(-1.2 . 2.4)
299         extraVerticalExtent = ##f
300         verticalExtent = ##f
301
302         \description "
303     Corresponds to a voice with lyrics.  Handles the printing of a
304     single line of lyrics.
305 "
306         
307         \name LyricsVoice 
308         \consists "Separating_line_group_engraver"
309         \consists "Lyric_engraver"
310         \consists "Extender_engraver"
311         \consists "Hyphen_engraver"
312         \consists "Stanza_number_engraver"
313         \consists "Vocal_name_engraver"
314         \consists "Skip_event_swallow_translator"
315         SeparationItem \set #'padding = #0.5
316 }
317 \translator {
318         \type "Engraver_group_engraver"
319         \name NoteNames
320         \consistsend "Axis_group_engraver"
321
322         minimumVerticalExtent = ##f
323         extraVerticalExtent = ##f
324         verticalExtent = ##f 
325
326         
327         \consists "Rest_swallow_translator" 
328         \consists "Skip_event_swallow_translator"
329         \consists "Tie_engraver"
330         \consists "Note_swallow_translator"
331         \consists "Note_name_engraver"
332         \consists "Separating_line_group_engraver"
333 }
334
335 \translator {
336         \type "Engraver_group_engraver"
337         \name Lyrics
338         \description  "Typesets lyrics."
339         
340         %% To get folded repeats right.
341         \consists Vertical_align_engraver 
342
343         minimumVerticalExtent = ##f
344         extraVerticalExtent = ##f
345         verticalExtent = ##f 
346         
347         \accepts "LyricsVoice"
348 }
349
350
351 \translator {
352         \type "Engraver_group_engraver"
353         \name ChordNames
354         \description "Typesets chord names."
355         
356         \consists "Rest_swallow_translator" 
357         \consists "Output_property_engraver"    
358         \consists "Separating_line_group_engraver"
359         \consists "Chord_name_engraver"
360         \consists "Skip_event_swallow_translator"
361         \consistsend "Hara_kiri_engraver"
362         
363         minimumVerticalExtent = #'(0 . 2.5)
364         extraVerticalExtent = ##f
365         SeparatingGroupSpanner \override #'padding = #0.8
366         verticalExtent = ##f 
367 }
368
369
370 RemoveEmptyStaffContext= \translator {
371         \StaffContext
372         \remove "Axis_group_engraver"
373         \consistsend "Hara_kiri_engraver"
374         \accepts "Voice"
375
376         % hara kiri & auto knee don't work together.
377         Beam \override #'auto-knee-gap = #'()
378 }
379
380 AncientRemoveEmptyStaffContext = \translator {
381     %% why not add by default?
382     
383         \RemoveEmptyStaffContext
384         \accepts "VaticanaVoice"
385         \accepts "GregorianTranscriptionVoice"
386 }
387
388 \translator {
389         \type Score_engraver
390         \name Score
391         localKeySignature = #'()
392
393         \description "This is the top level notation context.  No
394     other context can contain a @code{Score} context.  This context
395     handles the administration of time signatures.  It also makes sure
396     that items such as clefs, time signatures, and key-signatures are
397     aligned across staves.
398
399     You cannot explicitly instantiate a Score context (since it is
400     not contained in any other context).  It is instantiated
401     automatically when an output definition (a @code{\score} or
402     @code{\paper} block) is processed."
403         
404         \consists "Repeat_acknowledge_engraver"
405         \consists "Staff_collecting_engraver"
406
407         % move the alias along with the engraver.
408
409         %% TODO? add this alias from Timing_engraver::initialize() ? 
410         \consists "Timing_engraver"
411         \alias "Timing"
412         
413         \consists "Output_property_engraver"
414         \consists "System_start_delimiter_engraver"
415         \consists "Mark_engraver"       
416         \consists "Metronome_mark_engraver"     
417         \consists "Break_align_engraver"
418         \consists "Spacing_engraver"
419         \consists "Vertical_align_engraver"
420         \consists "Lyric_phrasing_engraver"
421         \consists "Bar_number_engraver"
422         \consists "Span_arpeggio_engraver"
423
424         \accepts "Staff"
425         \accepts "TabStaff"
426         \accepts "VaticanaStaff"
427         \accepts "GregorianTranscriptionStaff"
428         \accepts "StaffContainer"
429         \accepts "StaffGroup"
430         \accepts "RhythmicStaff"
431         \accepts "Lyrics"
432         \accepts "ChordNames"
433         \accepts "GrandStaff"
434         \accepts "ChoirStaff"
435         \accepts "PianoStaff"
436         \accepts "Devnull"
437         \accepts "NoteNames"
438         \accepts "FiguredBass"
439
440         soloText = #"Solo"
441         soloIIText = #"Solo II"
442         aDueText = #"a2"
443         soloADue = ##t
444         splitInterval = #'(0 . 1)
445         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
446         systemStartDelimiter =#'SystemStartBar
447
448         melismaBusyProperties = #default-melisma-properties
449         
450         clefGlyph = #"clefs-G"
451         clefPosition = #-2
452         centralCPosition = #-6
453         
454         defaultBarType = #"|"
455         barNumberVisibility = #default-bar-number-visibility
456         automaticBars = ##t
457         
458         explicitClefVisibility = #all-visible
459         explicitKeySignatureVisibility = #all-visible
460         autoBeamSettings = #default-auto-beam-settings
461         autoBeaming = ##t
462         scriptDefinitions = #default-script-alist
463
464         verticalAlignmentChildCallback = #Align_interface::alignment_callback
465
466         pedalSustainStrings = #'("Ped." "*Ped." "*")
467         pedalSustainStyle = #'text
468         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
469         pedalUnaCordaStyle = #'text
470
471         %% These are in ordinary italic font, including the *,
472         %% but they are unlikely to be used, 
473         %% as the default pedal-style for SostenutoPedal is 'mixed':
474         %% i.e.  Sost. Ped_____________________ 
475         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
476         pedalSostenutoStyle = #'mixed
477
478         fingeringOrientations = #'(up down)
479         tupletNumberFormatFunction = #denominator-tuplet-formatter
480         markFormatter = #format-mark-letters
481         rehearsalMark = #1 
482         subdivideBeams = ##f
483         allowBeamBreak = ##f
484         extraNatural = ##t
485         autoAccidentals = #'(Staff (same-octave . 0))
486         autoCautionaries = #'()  
487
488        keyAccidentalOrder = #`(
489          (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
490          (3  . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
491          (6 . ,DOUBLE-FLAT) (2  . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1  . ,DOUBLE-FLAT) (4  . ,DOUBLE-FLAT) (0  . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
492          (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
493         )
494         breakAlignOrder = #'(
495           instrument-name
496           left-edge
497           ambitus
498           breathing-sign
499           clef
500           rehearsal-mark
501           staff-bar
502           key-signature
503           time-signature
504           custos
505         )
506         barCheckSynchronize = ##f
507         
508         %% chord names:
509         chordNameFunction = #ignatzek-chord-names
510         majorSevenSymbol = #whiteTriangleMarkup
511         chordNameSeparator = #(make-simple-markup  "/")
512         chordNameExceptions = #ignatzekExceptions
513         chordNoteNamer = #'()
514         chordRootNamer = #note-name->markup
515
516         chordNameExceptionsFull = #fullJazzExceptions
517         chordNameExceptionsPartial = #partialJazzExceptions
518         
519         %% tablature:
520         stringOneTopmost = ##t
521         highStringOne = ##t
522
523         %% One may change the strings tuning as following :
524         %% The lenght of the list must be equal to the number of string
525         stringTunings   = #guitar-tunings
526         tablatureFormat = #fret-number-tablature-format
527
528         %%
529         bassFigureFormatFunction = #make-bass-figure-markup
530         metronomeMarkFormatter = #format-metronome-markup
531         graceSettings = #`#(
532                  (Voice Stem direction 1)
533
534                  ;; TODO: should take from existing definition.
535                  ;; c&p from define-grobs.scm
536                  
537                  (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
538                  (Voice Stem stem-shorten (0.4 0))
539                  (Voice Stem  font-size -3)
540                  (Voice NoteHead  font-size -3)
541                  (Voice Dots  font-size -3)
542                  (Voice Stem beamed-lengths  
543                   ,(map (lambda (x) (* 0.8 x)) '(3.26)))
544                  (Voice Stem beamed-minimum-free-lengths  
545                   ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
546                  (Voice Stem beamed-extreme-minimum-free-lengths  
547                   ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
548
549                  (Voice Stem no-stem-extend #t)
550                  (Voice Beam thickness 0.384)
551                  (Voice Beam space-function ,(lambda (beam mult)
552                                                 (* 0.8 (Beam::space_function
553                                                         beam mult))))
554                  (Voice Beam position-callbacks (,Beam::least_squares
555                                                     ,Beam::check_concave
556                                                     ,Beam::slope_damping))
557                  (Staff Accidental font-size -4)
558                  (Voice Slur direction -1)
559         )
560         
561         \grobdescriptions #all-grob-descriptions
562 }
563
564 OrchestralScoreContext = \translator {
565         \ScoreContext
566 }
567
568 EasyNotation = \translator {
569         \ScoreContext
570         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
571         NoteHead \override #'Y-extent-callback = #'()
572         NoteHead \override #'X-extent-callback = #'()
573 }
574
575
576
577 \translator {
578         \type "Engraver_group_engraver"
579         \name FiguredBass 
580         \consists "Figured_bass_engraver"
581         \consists "Rest_swallow_translator"
582         \consists "Note_swallow_translator"
583         \consists "Separating_line_group_engraver"
584         
585         \consistsend "Hara_kiri_engraver"
586 }
587
588 \translator {
589     \name "Devnull"
590     \type "Engraver_group_engraver"
591     \consists "Swallow_engraver"
592     \description "Silently discards all musical information given to this context. "
593     }
594
595 \translator {
596       \VoiceContext
597       \name "TabVoice"
598       \denies "Thread"
599       \consists "Tab_note_heads_engraver"
600       \remove "Fingering_engraver"
601       \remove "New_fingering_engraver"
602
603       \description "Context for drawing notes in a Tab staff. "
604       Slur \override #'font-family       = #'roman
605       Slur \override #'molecule-callback = #hammer-molecule-callback
606       Slur \override #'direction    = #-1
607
608       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
609       % This feature is now disabled because most of the tab does not use it.
610       %Beam \override #'damping = #100000
611       %Stem \override #'up-to-staff = ##t
612
613       % No accidental in tablature !
614       \remove Accidental_engraver
615 }
616
617 \translator {
618       \StaffContext
619       \alias "Staff"
620       \name "TabStaff"
621       \denies "Voice"
622
623       \description "Context for generating tablature. [DOCME]"
624
625 %{
626       TODO: this context should use a special staff_symbol engraver that
627       takes the line count out of the stringTunings property.
628
629 %}
630       
631       
632       \accepts "TabVoice"
633       
634       % 6 strings
635       StaffSymbol \override #'line-count  = #6
636       StaffSymbol \override #'staff-space = #1.5
637
638      % Don't draw stems over the tablature figures !
639       Stem \override #'avoid-note-head = ##t
640       
641       % No accidental in tablature !
642       \remove "Accidental_engraver"
643       \remove "Key_engraver"
644       \remove "String_number_engraver"
645       % Special "TAB" clef
646       clefGlyph = #"clefs-tab"
647       clefPosition = #0
648 }
649
650 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
651 % but this does not work (is this a bug or intended behaviour?):
652 %
653 % If I try to do so, I get "error: unknown escaped string:
654 % `\VaticanaStaffContext'" in params-init.ly.  If I also move
655 % "\translator { \Vaticana*Context }" from params-init.ly to the end
656 % of gregorian-init.ly, then I get "error: parse error, unexpected
657 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
658 % gregorian-init.ly. --jr
659
660 \translator {
661   \VoiceContext
662   \name "VaticanaVoice"
663   \alias "Voice"
664   \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
665
666   % We can not remove Slur_engraver, since \addlyrics depends on it.
667   % Instead, we make the grob transparent.
668   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
669   % infinite steepness reqd"), since in ligatures, all note heads are in
670   % the same paper column such that the (transparent) slurs eventually may
671   % start and end in the same column.
672   Slur \override #'transparent = ##t
673
674   % We can not remove Stem_engraver, since slurs depend on stems.  If
675   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
676   % in position 1 (expecting grob): ()".
677   % As a workaround, we make the grob transparent.
678   Stem \set #'transparent = ##t
679
680   % Since we do not remove stems, but only make it transparent, we have
681   % to set the length to 0.0.  Otherwise, articulation marks (such as
682   % ictus, circulus or accentus) may be vertically placed quite away from
683   % the note head.
684   Stem \set #'length = #'0.0
685
686   \remove "Ligature_bracket_engraver"
687   \consists "Vaticana_ligature_engraver"
688
689   % Set default head for notes outside of \[ \].
690   NoteHead \set #'style = #'vaticana_punctum
691
692   % Put some space before and after divisiones.
693   % FIXME: This does not seem to show any effect.
694   Script \set #'padding = #0.5
695
696   % There are no beams in Gregorian Chant notation.
697   autobeaming = ##f
698
699   % Prepare TextSpanner for \episem{Initium|Finis} use.
700   TextSpanner \set #'style = #'line
701   TextSpanner \set #'edge-height = #'(0 . 0)
702   TextSpanner \set #'padding = #0.5
703   TextSpanner \set #'enclose-bounds = #1
704   TextSpanner \set #'edge-text = #'("" . "")
705 }
706
707 \translator {
708   \StaffContext
709   \name "VaticanaStaff"
710   \alias "Staff"
711   \denies "Voice"
712   \accepts "VaticanaVoice"
713   \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
714
715   \remove "Time_signature_engraver"
716   \consists "Custos_engraver"
717
718   % We can not remove Bar_engraver; otherwise clefs and custodes will
719   % not show up any more among other line breaking issues.
720   % Instead, we make the grob transparent.
721   BarLine \set #'transparent = ##t
722
723   StaffSymbol \set #'line-count = #4
724   StaffSymbol \set #'thickness = #0.6
725
726   % FIXME: unit on StaffSymbol's width should be \linewidth.
727   % StaffSymbol \set #'width = #60.0
728
729   % Choose vaticana do clef on 3rd line as default.
730   clefGlyph = #"clefs-vaticana_do"
731   centralCPosition = #1
732   clefPosition = #1
733   clefOctavation = #0
734
735   % Select vaticana style font.
736   KeySignature \set #'style = #'vaticana
737   Accidental \set #'style = #'vaticana
738   Custos \set #'style = #'vaticana
739   Custos \set #'neutral-position = #3
740   Custos \set #'neutral-direction = #-1
741   Custos \set #'adjust-if-on-staffline = ##t
742
743   % Score.timing = ##f
744   % Score.barAlways = ##t
745 }
746
747 \translator {
748   \VoiceContext
749   \name "GregorianTranscriptionVoice"
750   \alias "Voice"
751
752   % Removing ligature bracket engraver without replacing it by some
753   % other ligature engraver would cause a "Junking event: `LigatureEvent'"
754   % warning for every "\[" and "\]".  Therefore, we make the grob
755   % transparent instead.
756   LigatureBracket \set #'transparent = ##t
757
758   % We can not remove Slur_engraver, since \addlyrics depends on it.
759   % Instead, we make the grob transparent.
760   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
761   % infinite steepness reqd"), since in ligatures, all note heads are in
762   % the same paper column such that the (transparent) slurs eventually may
763   % start and end in the same column.
764   Slur \override #'transparent = ##t
765
766   % We can not remove Stem_engraver, since slurs depend on stems.  If
767   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
768   % in position 1 (expecting grob): ()".
769   % As a workaround, we make the grob transparent.
770   Stem \set #'transparent = ##t
771
772   % Since we do not remove stems, but only make it transparent, we have
773   % to set the length to 0.0.  Otherwise, articulation marks (such as
774   % ictus, circulus or accentus) may be vertically placed quite away from
775   % the note head.
776   Stem \set #'length = #'0.0
777
778   % Put some space before and after divisiones.
779   % FIXME: This does not seem to show any effect.
780   Script \set #'padding = #0.5
781
782   % There are no beams in Gregorian Chant notation.
783   autobeaming = ##f
784
785   % Prepare TextSpanner for \episem{Initium|Finis} use.
786   TextSpanner \set #'style = #'line
787   TextSpanner \set #'edge-height = #'(0 . 0)
788   TextSpanner \set #'padding = #0.5
789   TextSpanner \set #'enclose-bounds = #1
790   TextSpanner \set #'edge-text = #'("" . "")
791 }
792  \translator {
793   \StaffContext
794   \name "GregorianTranscriptionStaff"
795   \alias "Staff"
796   \denies "Voice"
797   \accepts "GregorianTranscriptionVoice"
798
799   % We can not remove Bar_engraver; otherwise clefs and custodes will
800   % not show up any more among other line breaking issues.
801   % Instead, we make the grob transparent.
802   BarLine \set #'transparent = ##t
803 }