]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* lily/lyric-phrasing-engraver.cc: move from
[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  % urg, in \pt
122         VoltaBracket \override #'padding =  #5  % urg, in \pt
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 "Instrument_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         verticalExtent = ##f 
366 }
367
368
369 RemoveEmptyStaffContext= \translator {
370         \StaffContext
371         \remove "Axis_group_engraver"
372         \consistsend "Hara_kiri_engraver"
373         \accepts "Voice"
374
375         % hara kiri & auto knee don't work together.
376         Beam \override #'auto-knee-gap = #'()
377 }
378
379 AncientRemoveEmptyStaffContext = \translator {
380     %% why not add by default?
381     
382         \RemoveEmptyStaffContext
383         \accepts "VaticanaVoice"
384         \accepts "GregorianTranscriptionVoice"
385 }
386
387 \translator {
388         \type Score_engraver
389         \name Score
390         localKeySignature = #'()
391
392         \description "This is the top level notation context.  No
393     other context can contain a @code{Score} context.  This context
394     handles the administration of time signatures.  It also makes sure
395     that items such as clefs, time signatures, and key-signatures are
396     aligned across staves.
397
398     You cannot explicitly instantiate a Score context (since it is
399     not contained in any other context).  It is instantiated
400     automatically when an output definition (a @code{\score} or
401     @code{\paper} block) is processed."
402         
403         \consists "Repeat_acknowledge_engraver"
404         \consists "Staff_collecting_engraver"
405
406         % move the alias along with the engraver.
407
408         %% TODO? add this alias from Timing_engraver::initialize() ? 
409         \consists "Timing_engraver"
410         \alias "Timing"
411         
412         \consists "Output_property_engraver"
413         \consists "System_start_delimiter_engraver"
414         \consists "Mark_engraver"       
415         \consists "Metronome_mark_engraver"     
416         \consists "Break_align_engraver"
417         \consists "Spacing_engraver"
418         \consists "Vertical_align_engraver"
419         \consists "Lyric_phrasing_engraver"
420         \consists "Bar_number_engraver"
421         \consists "Span_arpeggio_engraver"
422
423         \accepts "Staff"
424         \accepts "TabStaff"
425         \accepts "VaticanaStaff"
426         \accepts "GregorianTranscriptionStaff"
427         \accepts "StaffContainer"
428         \accepts "StaffGroup"
429         \accepts "RhythmicStaff"
430         \accepts "Lyrics"
431         \accepts "ChordNames"
432         \accepts "GrandStaff"
433         \accepts "ChoirStaff"
434         \accepts "PianoStaff"
435         \accepts "NoteNames"
436         \accepts "FiguredBass"
437
438         soloText = #"Solo"
439         soloIIText = #"Solo II"
440         aDueText = #"a2"
441         soloADue = ##t
442         splitInterval = #'(0 . 1)
443         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
444         systemStartDelimiter =#'SystemStartBar
445
446         melismaBusyProperties = #'(melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy)
447         
448         clefGlyph = #"clefs-G"
449         clefPosition = #-2
450         centralCPosition = #-6
451         
452         automaticPhrasing = ##t
453         phrasingPunctuation = #".,:!?\""
454         
455         defaultBarType = #"|"
456         barNumberVisibility = #default-bar-number-visibility
457         automaticBars = ##t
458         
459         explicitClefVisibility = #all-visible
460         explicitKeySignatureVisibility = #all-visible
461         autoBeamSettings = #default-auto-beam-settings
462         autoBeaming = ##t
463         scriptDefinitions = #default-script-alist
464
465         verticalAlignmentChildCallback = #Align_interface::alignment_callback
466
467         pedalSustainStrings = #'("Ped." "*Ped." "*")
468         pedalSustainStyle = #'text
469         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
470         pedalUnaCordaStyle = #'text
471
472         %% These are in ordinary italic font, including the *,
473         %% but they are unlikely to be used, 
474         %% as the default pedal-style for SostenutoPedal is 'mixed':
475         %% i.e.  Sost. Ped_____________________ 
476         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
477         pedalSostenutoStyle = #'mixed
478
479         fingeringOrientations = #'(up down)
480         tupletNumberFormatFunction = #denominator-tuplet-formatter
481         
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           staff-bar
501           key-signature
502           time-signature
503           custos
504         )
505         barCheckSynchronize = ##t
506         
507         %% chord names:
508         chordNameFunction = #ignatzek-chord-names
509         majorSevenSymbol = #whiteTriangleMarkup
510         chordNameSeparator = #(make-simple-markup  "/")
511         chordNameExceptions = #ignatzekExceptions
512         chordNoteNamer = #'()
513         chordRootNamer = #note-name->markup
514
515         chordNameExceptionsFull = #fullJazzExceptions
516         chordNameExceptionsPartial = #partialJazzExceptions
517         
518         %% tablature:
519         stringOneTopmost = ##t
520         highStringOne = ##t
521
522         %% One may change the strings tuning as following :
523         %% The lenght of the list must be equal to the number of string
524         stringTunings   = #guitar-tunings
525         tablatureFormat = #fret-number-tablature-format
526
527         %%
528         bassFigureFormatFunction = #make-bass-figure-markup
529         metronomeMarkFormatter = #make-metronome-markup
530
531
532         graceSettings = #`#(
533                  (Voice Stem direction 1)
534
535                  ;; TODO: should take from existing definition.
536                  ;; c&p from define-grobs.scm
537                  
538                  (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
539                  (Voice Stem stem-shorten (0.4 0))
540                  (Voice Stem  font-size -3)
541                  (Voice NoteHead  font-size -3)
542                  (Voice Dots  font-size -3)
543                  (Voice Stem beamed-lengths  
544                   ,(map (lambda (x) (* 0.8 x)) '(3.26)))
545                  (Voice Stem beamed-minimum-free-lengths  
546                   ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
547                  (Voice Stem beamed-extreme-minimum-free-lengths  
548                   ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
549
550                  (Voice Stem no-stem-extend #t)
551                  (Voice Beam thickness 0.384)
552                  (Voice Beam space-function ,(lambda (beam mult)
553                                                 (* 0.8 (Beam::space_function
554                                                         beam mult))))
555                  (Voice Beam position-callbacks (,Beam::least_squares
556                                                     ,Beam::check_concave
557                                                     ,Beam::slope_damping))
558                  (Staff Accidental font-size -4)
559                  (Voice Slur direction -1)
560         )
561         
562         \grobdescriptions #all-grob-descriptions
563 }
564
565 \translator {
566         \ScoreContext
567 }
568
569 EasyNotation = \translator {
570         \ScoreContext
571         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
572         NoteHead \override #'Y-extent-callback = #'()
573         NoteHead \override #'X-extent-callback = #'()
574 }
575
576
577
578 \translator {
579         \type "Engraver_group_engraver"
580         \name FiguredBass 
581         \consists "Figured_bass_engraver"
582         \consists "Rest_swallow_translator"
583         \consists "Note_swallow_translator"
584         \consists "Separating_line_group_engraver"
585         
586         \consistsend "Hara_kiri_engraver"
587 }
588
589 \translator {
590       \VoiceContext
591       \name "TabVoice"
592       \denies "Thread"
593       \consists "Tab_note_heads_engraver"
594       \remove "Fingering_engraver"
595       \remove "New_fingering_engraver"
596       
597       Slur \override #'font-family       = #'roman
598       Slur \override #'molecule-callback = #hammer-molecule-callback
599       Slur \override #'direction    = #-1
600
601       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
602       % This feature is now disabled because most of the tab does not use it.
603       %Beam \override #'damping = #100000
604       %Stem \override #'up-to-staff = ##t
605
606       % No accidental in tablature !
607       \remove Accidental_engraver
608 }
609
610 \translator {
611       \StaffContext
612       \alias "Staff"
613       \name "TabStaff"
614       \denies "Voice"
615
616       \description "Context for generating tablature. [DOCME]"
617
618 %{
619       TODO: this context should use a special staff_symbol engraver that
620       takes the line count out of the stringTunings property.
621
622 %}
623       
624       
625       \accepts "TabVoice"
626       
627       % 6 strings
628       StaffSymbol \override #'line-count  = #6
629       StaffSymbol \override #'staff-space = #1.5
630
631      % Don't draw stems over the tablature figures !
632       Stem \override #'avoid-note-head = ##t
633       
634       % No accidental in tablature !
635       \remove "Accidental_engraver"
636       \remove "Key_engraver"
637       \remove "String_number_engraver"
638       % Special "TAB" clef
639       clefGlyph = #"clefs-tab"
640       clefPosition = #0
641 }
642
643 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
644 % but this does not work (is this a bug or intended behaviour?):
645 %
646 % If I try to do so, I get "error: unknown escaped string:
647 % `\VaticanaStaffContext'" in params-init.ly.  If I also move
648 % "\translator { \Vaticana*Context }" from params-init.ly to the end
649 % of gregorian-init.ly, then I get "error: parse error, unexpected
650 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
651 % gregorian-init.ly. --jr
652
653 \translator {
654   \VoiceContext
655   \name "VaticanaVoice"
656   \alias "Voice"
657   \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
658
659   % We can not remove Slur_engraver, since \addlyrics depends on it.
660   % Instead, we make the grob transparent.
661   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
662   % infinite steepness reqd"), since in ligatures, all note heads are in
663   % the same paper column such that the (transparent) slurs eventually may
664   % start and end in the same column.
665   Slur \override #'transparent = ##t
666
667   % We can not remove Stem_engraver, since slurs depend on stems.  If
668   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
669   % in position 1 (expecting grob): ()".
670   % As a workaround, we make the grob transparent.
671   Stem \set #'transparent = ##t
672
673   % Since we do not remove stems, but only make it transparent, we have
674   % to set the length to 0.0.  Otherwise, articulation marks (such as
675   % ictus, circulus or accentus) may be vertically placed quite away from
676   % the note head.
677   Stem \set #'length = #'0.0
678
679   \remove "Ligature_bracket_engraver"
680   \consists "Vaticana_ligature_engraver"
681
682   % Set default head for notes outside of \[ \].
683   NoteHead \set #'style = #'vaticana_punctum
684
685   % Put some space before and after divisiones.
686   % FIXME: This does not seem to show any effect.
687   Script \set #'padding = #0.5
688
689   % There are no beams in Gregorian Chant notation.
690   autobeaming = ##f
691
692   % Prepare TextSpanner for \episem{Initium|Finis} use.
693   TextSpanner \set #'style = #'line
694   TextSpanner \set #'edge-height = #'(0 . 0)
695   TextSpanner \set #'padding = #0.5
696   TextSpanner \set #'enclose-bounds = ##t
697   TextSpanner \set #'edge-text = #'("" . "")
698 }
699
700 \translator {
701   \StaffContext
702   \name "VaticanaStaff"
703   \alias "Staff"
704   \denies "Voice"
705   \accepts "VaticanaVoice"
706   \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
707
708   \remove "Time_signature_engraver"
709   \consists "Custos_engraver"
710
711   % We can not remove Bar_engraver; otherwise clefs and custodes will
712   % not show up any more among other line breaking issues.
713   % Instead, we make the grob transparent.
714   BarLine \set #'transparent = ##t
715
716   StaffSymbol \set #'line-count = #4
717   StaffSymbol \set #'thickness = #0.6
718
719   % FIXME: unit on StaffSymbol's width should be \linewidth.
720   % StaffSymbol \set #'width = #60.0
721
722   % Choose vaticana do clef on 3rd line as default.
723   clefGlyph = #"clefs-vaticana_do"
724   centralCPosition = #1
725   clefPosition = #1
726   clefOctavation = #0
727
728   % Select vaticana style font.
729   KeySignature \set #'style = #'vaticana
730   Accidental \set #'style = #'vaticana
731   Custos \set #'style = #'vaticana
732   Custos \set #'neutral-position = #3
733   Custos \set #'neutral-direction = #-1
734   Custos \set #'adjust-if-on-staffline = ##t
735
736   % Score.timing = ##f
737   % Score.barAlways = ##t
738 }
739
740 \translator {
741   \VoiceContext
742   \name "GregorianTranscriptionVoice"
743   \alias "Voice"
744
745   % Removing ligature bracket engraver without replacing it by some
746   % other ligature engraver would cause a "Junking event: `LigatureEvent'"
747   % warning for every "\[" and "\]".  Therefore, we make the grob
748   % transparent instead.
749   LigatureBracket \set #'transparent = ##t
750
751   % We can not remove Slur_engraver, since \addlyrics depends on it.
752   % Instead, we make the grob transparent.
753   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
754   % infinite steepness reqd"), since in ligatures, all note heads are in
755   % the same paper column such that the (transparent) slurs eventually may
756   % start and end in the same column.
757   Slur \override #'transparent = ##t
758
759   % We can not remove Stem_engraver, since slurs depend on stems.  If
760   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
761   % in position 1 (expecting grob): ()".
762   % As a workaround, we make the grob transparent.
763   Stem \set #'transparent = ##t
764
765   % Since we do not remove stems, but only make it transparent, we have
766   % to set the length to 0.0.  Otherwise, articulation marks (such as
767   % ictus, circulus or accentus) may be vertically placed quite away from
768   % the note head.
769   Stem \set #'length = #'0.0
770
771   % Put some space before and after divisiones.
772   % FIXME: This does not seem to show any effect.
773   Script \set #'padding = #0.5
774
775   % There are no beams in Gregorian Chant notation.
776   autobeaming = ##f
777
778   % Prepare TextSpanner for \episem{Initium|Finis} use.
779   TextSpanner \set #'style = #'line
780   TextSpanner \set #'edge-height = #'(0 . 0)
781   TextSpanner \set #'padding = #0.5
782   TextSpanner \set #'enclose-bounds = ##t
783   TextSpanner \set #'edge-text = #'("" . "")
784 }
785  \translator {
786   \StaffContext
787   \name "GregorianTranscriptionStaff"
788   \alias "Staff"
789   \denies "Voice"
790   \accepts "GregorianTranscriptionVoice"
791
792   % We can not remove Bar_engraver; otherwise clefs and custodes will
793   % not show up any more among other line breaking issues.
794   % Instead, we make the grob transparent.
795   BarLine \set #'transparent = ##t
796 }