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