]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* Documentation/topdocs/NEWS.texi (Top): add quarter tones.
[lilypond.git] / ly / engraver-init.ly
1 \version "1.9.7"
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         melismaBusyProperties = #'(melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy)
441         
442         clefGlyph = #"clefs-G"
443         clefPosition = #-2
444         centralCPosition = #-6
445         
446         automaticPhrasing = ##t
447         automaticMelismata = ##t
448         
449         defaultBarType = #"|"
450         barNumberVisibility = #default-bar-number-visibility
451         automaticBars = ##t
452         
453         explicitClefVisibility = #all-visible
454         explicitKeySignatureVisibility = #all-visible
455         autoBeamSettings = #default-auto-beam-settings
456         autoBeaming = ##t
457         scriptDefinitions = #default-script-alist
458
459         verticalAlignmentChildCallback = #Align_interface::alignment_callback
460
461         pedalSustainStrings = #'("Ped." "*Ped." "*")
462         pedalSustainStyle = #'text
463         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
464         pedalUnaCordaStyle = #'text
465
466         %% These are in ordinary italic font, including the *,
467         %% but they are unlikely to be used, 
468         %% as the default pedal-style for SostenutoPedal is 'mixed':
469         %% i.e.  Sost. Ped_____________________ 
470         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
471         pedalSostenutoStyle = #'mixed
472
473         fingeringOrientations = #'(up down)
474         tupletNumberFormatFunction = #denominator-tuplet-formatter
475         
476         subdivideBeams = ##f
477         allowBeamBreak = ##f
478         extraNatural = ##t
479         autoAccidentals = #'(Staff (same-octave . 0))
480         autoCautionaries = #'()  
481
482        keyAccidentalOrder = #'(
483          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
484          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
485          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
486          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
487         )
488         breakAlignOrder = #'(
489           instrument-name
490           left-edge
491           ambitus
492           breathing-sign
493           clef
494           staff-bar
495           key-signature
496           time-signature
497           custos
498         )
499         barCheckSynchronize = ##t
500         
501         %% chord names:
502         chordNameFunction = #ignatzek-chord-names
503         majorSevenSymbol = #whiteTriangleMarkup
504         chordNameSeparator = #(make-simple-markup  "/")
505         chordNameExceptions = #ignatzekExceptions
506         chordNoteNamer = #'()
507         chordRootNamer = #note-name->markup
508
509         chordNameExceptionsFull = #fullJazzExceptions
510         chordNameExceptionsPartial = #partialJazzExceptions
511         
512         %% tablature:
513         stringOneTopmost = ##t
514         highStringOne = ##t
515
516         %% One may change the strings tuning as following :
517         %% The lenght of the list must be equal to the number of string
518         stringTunings   = #guitar-tunings
519         tablatureFormat = #fret-number-tablature-format
520
521         %%
522         bassFigureFormatFunction = #make-bass-figure-markup
523         metronomeMarkFormatter = #make-metronome-markup
524
525
526         graceSettings = #`#(
527                  (Voice Stem direction 1)
528
529                  ;; TODO: should take from existing definition.
530                  ;; c&p from define-grobs.scm
531                  
532                  (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
533                  (Voice Stem stem-shorten (0.4 0))
534                  (Voice Stem font-relative-size -1)
535                  (Voice NoteHead font-relative-size -1)
536                  (Voice Dots font-relative-size -1)
537                  (Voice Stem beamed-lengths  
538                   ,(map (lambda (x) (* 0.8 x)) '(3.26)))
539                  (Voice Stem beamed-minimum-free-lengths  
540                   ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
541                  (Voice Stem beamed-extreme-minimum-free-lengths  
542                   ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
543
544                  (Voice Stem no-stem-extend #t)
545                  (Voice Beam thickness 0.384)
546                  (Voice Beam space-function ,(lambda (beam mult)
547                                                 (* 0.8 (Beam::space_function
548                                                         beam mult))))
549                  (Voice Beam position-callbacks (,Beam::least_squares
550                                                     ,Beam::check_concave
551                                                     ,Beam::slope_damping))
552                  (Staff Accidental font-relative-size -2)
553                  (Voice Slur direction -1)
554         )
555         
556         \grobdescriptions #all-grob-descriptions
557 }
558
559 OrchestralScoreContext= \translator {
560         \ScoreContext
561 }
562
563 EasyNotation =  \translator {
564         \ScoreContext
565         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
566 }
567
568
569
570 FiguredBassContext = \translator {
571         \type "Engraver_group_engraver"
572         \name FiguredBass 
573         \consists "Figured_bass_engraver"
574         \consists "Rest_swallow_translator"
575         \consists "Note_swallow_translator"
576         \consists "Separating_line_group_engraver"
577         
578         \consistsend "Hara_kiri_engraver"
579 }
580
581 TabVoiceContext =   \translator {
582       \VoiceContext
583       \name "TabVoice"
584       \denies "Thread"
585       \consists "Tab_note_heads_engraver"
586       \remove "Fingering_engraver"
587       \remove "New_fingering_engraver"
588       
589       Slur \override #'font-family       = #'roman
590       Slur \override #'molecule-callback = #hammer-molecule-callback
591       Slur \override #'direction    = #-1
592
593       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
594       % This feature is now disabled because most of the tab does not use it.
595       %Beam \override #'damping = #100000
596       %Stem \override #'up-to-staff = ##t
597
598       % No accidental in tablature !
599       \remove Accidental_engraver
600 }
601
602 TabStaffContext = \translator {
603       \StaffContext
604       \alias "Staff"
605       \name "TabStaff"
606       \denies "Voice"
607
608       \description "Context for generating tablature. [DOCME]"
609       
610       \accepts "TabVoice"
611       
612       % 6 strings
613       StaffSymbol \override #'line-count  = #6
614       StaffSymbol \override #'staff-space = #1.5
615
616      % Don't draw stems over the tablature figures !
617       Stem \override #'avoid-note-head = ##t
618       
619       % No accidental in tablature !
620       \remove Accidental_engraver
621       \remove Key_engraver
622
623       % Special "TAB" clef
624       clefGlyph = #"clefs-tab"
625       clefPosition = #0
626 }
627
628 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
629 % but this does not work (is this a bug or intended behaviour?):
630 %
631 % If I try to do so, I get "error: unknown escaped string:
632 % `\VaticanaStaffContext'" in params-init.ly.  If I also move
633 % "\translator { \Vaticana*Context }" from params-init.ly to the end
634 % of gregorian-init.ly, then I get "error: parse error, unexpected
635 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
636 % gregorian-init.ly. --jr
637
638 VaticanaVoiceContext = \translator {
639   \VoiceContext
640   \name "VaticanaVoice"
641   \alias "Voice"
642   \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
643
644   % We can not remove Slur_engraver, since \addlyrics depends on it.
645   % Instead, we make the grob transparent.
646   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
647   % infinite steepness reqd"), since in ligatures, all note heads are in
648   % the same paper column such that the (transparent) slurs eventually may
649   % start and end in the same column.
650   Slur \override #'transparent = ##t
651
652   % We can not remove Stem_engraver, since slurs depend on stems.  If
653   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
654   % in position 1 (expecting grob): ()".
655   % As a workaround, we make the grob transparent.
656   Stem \set #'transparent = ##t
657
658   % Since we do not remove stems, but only make it transparent, we have
659   % to set the length to 0.0.  Otherwise, articulation marks (such as
660   % ictus, circulus or accentus) may be vertically placed quite away from
661   % the note head.
662   Stem \set #'length = #'0.0
663
664   \remove "Ligature_bracket_engraver"
665   \consists "Vaticana_ligature_engraver"
666
667   % Set default head for notes outside of \[ \].
668   NoteHead \set #'style = #'vaticana_punctum
669
670   % Put some space before and after divisiones.
671   % FIXME: This does not seem to show any effect.
672   Script \set #'padding = #0.5
673
674   % There are no beams in Gregorian Chant notation.
675   autobeaming = ##f
676
677   % Prepare TextSpanner for \episem{Initium|Finis} use.
678   TextSpanner \set #'style = #'line
679   TextSpanner \set #'edge-height = #'(0 . 0)
680   TextSpanner \set #'padding = #0.5
681   TextSpanner \set #'enclose-bounds = ##t
682   TextSpanner \set #'edge-text = #'("" . "")
683 }
684
685 VaticanaStaffContext = \translator {
686   \StaffContext
687   \name "VaticanaStaff"
688   \alias "Staff"
689   \denies "Voice"
690   \accepts "VaticanaVoice"
691   \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
692
693   \remove "Time_signature_engraver"
694   \consists "Custos_engraver"
695
696   % We can not remove Bar_engraver; otherwise clefs and custodes will
697   % not show up any more among other line breaking issues.
698   % Instead, we make the grob transparent.
699   BarLine \set #'transparent = ##t
700
701   StaffSymbol \set #'line-count = #4
702   StaffSymbol \set #'thickness = #0.6
703
704   % FIXME: unit on StaffSymbol's width should be \linewidth.
705   % StaffSymbol \set #'width = #60.0
706
707   % Choose vaticana do clef on 3rd line as default.
708   clefGlyph = #"clefs-vaticana_do"
709   centralCPosition = #1
710   clefPosition = #1
711   clefOctavation = #0
712
713   % Select vaticana style font.
714   KeySignature \set #'style = #'vaticana
715   Accidental \set #'style = #'vaticana
716   Custos \set #'style = #'vaticana
717   Custos \set #'neutral-position = #3
718   Custos \set #'neutral-direction = #-1
719   Custos \set #'adjust-if-on-staffline = ##t
720
721   % Score.timing = ##f
722   % Score.barAlways = ##t
723 }
724
725 GregorianTranscriptionVoiceContext = \translator {
726   \VoiceContext
727   \name "GregorianTranscriptionVoice"
728   \alias "Voice"
729
730   % Removing ligature bracket engraver without replacing it by some
731   % other ligature engraver would cause a "Junking event: `LigatureEvent'"
732   % warning for every "\[" and "\]".  Therefore, we make the grob
733   % transparent instead.
734   LigatureBracket \set #'transparent = ##t
735
736   % We can not remove Slur_engraver, since \addlyrics depends on it.
737   % Instead, we make the grob transparent.
738   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
739   % infinite steepness reqd"), since in ligatures, all note heads are in
740   % the same paper column such that the (transparent) slurs eventually may
741   % start and end in the same column.
742   Slur \override #'transparent = ##t
743
744   % We can not remove Stem_engraver, since slurs depend on stems.  If
745   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
746   % in position 1 (expecting grob): ()".
747   % As a workaround, we make the grob transparent.
748   Stem \set #'transparent = ##t
749
750   % Since we do not remove stems, but only make it transparent, we have
751   % to set the length to 0.0.  Otherwise, articulation marks (such as
752   % ictus, circulus or accentus) may be vertically placed quite away from
753   % the note head.
754   Stem \set #'length = #'0.0
755
756   % Put some space before and after divisiones.
757   % FIXME: This does not seem to show any effect.
758   Script \set #'padding = #0.5
759
760   % There are no beams in Gregorian Chant notation.
761   autobeaming = ##f
762
763   % Prepare TextSpanner for \episem{Initium|Finis} use.
764   TextSpanner \set #'style = #'line
765   TextSpanner \set #'edge-height = #'(0 . 0)
766   TextSpanner \set #'padding = #0.5
767   TextSpanner \set #'enclose-bounds = ##t
768   TextSpanner \set #'edge-text = #'("" . "")
769 }
770
771 GregorianTranscriptionStaffContext = \translator {
772   \StaffContext
773   \name "GregorianTranscriptionStaff"
774   \alias "Staff"
775   \denies "Voice"
776   \accepts "GregorianTranscriptionVoice"
777
778   % We can not remove Bar_engraver; otherwise clefs and custodes will
779   % not show up any more among other line breaking issues.
780   % Instead, we make the grob transparent.
781   BarLine \set #'transparent = ##t
782 }