]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* lilypond-mode.el: allow `-' for keywords and identifiers.
[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         graceSettings = #`#(
525                  (Voice Stem direction 1)
526                  (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(2.5 2.5 3.0 4.0 5.0)))
527                  (Voice Stem stem-shorten (0.4 0))
528                  (Voice Stem font-relative-size -1)
529                  (Voice NoteHead font-relative-size -1)
530                  (Voice Dots font-relative-size -1)
531                  (Voice Stem beamed-lengths  
532                   ,(map (lambda (x) (* 0.8 x)) '(3.26)))
533                  (Voice Stem beamed-minimum-free-lengths  
534                   ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
535                  (Voice Stem beamed-extreme-minimum-free-lengths  
536                   ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
537
538                  (Voice Stem no-stem-extend #t)
539                  (Voice Beam thickness 0.384)
540                  (Voice Beam space-function ,(lambda (beam mult)
541                                                 (* 0.8 (Beam::space_function
542                                                         beam mult))))
543                  (Voice Beam position-callbacks (,Beam::least_squares
544                                                     ,Beam::check_concave
545                                                     ,Beam::slope_damping))
546                  (Staff Accidental font-relative-size -2)
547                  (Voice Slur direction -1)
548         )
549         
550         \grobdescriptions #all-grob-descriptions
551 }
552
553 OrchestralScoreContext= \translator {
554         \ScoreContext
555 }
556
557 EasyNotation =  \translator {
558         \ScoreContext
559         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
560 }
561
562
563
564 FiguredBassContext = \translator {
565         \type "Engraver_group_engraver"
566         \name FiguredBass 
567         \consists "Figured_bass_engraver"
568         \consists "Rest_swallow_translator"
569         \consists "Note_swallow_translator"
570         \consists "Separating_line_group_engraver"
571         
572         \consistsend "Hara_kiri_engraver"
573 }
574
575 TabVoiceContext =   \translator {
576       \VoiceContext
577       \name "TabVoice"
578       \denies "Thread"
579       \consists "Tab_note_heads_engraver"
580       \remove "Fingering_engraver"
581       \remove "New_fingering_engraver"
582       
583       Slur \override #'font-family       = #'roman
584       Slur \override #'molecule-callback = #hammer-molecule-callback
585       Slur \override #'direction    = #-1
586
587       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
588       % This feature is now disabled because most of the tab does not use it.
589       %Beam \override #'damping = #100000
590       %Stem \override #'up-to-staff = ##t
591
592       % No accidental in tablature !
593       \remove Accidental_engraver
594 }
595
596 TabStaffContext = \translator {
597       \StaffContext
598       \alias "Staff"
599       \name "TabStaff"
600       \denies "Voice"
601
602       \description "Context for generating tablature. [DOCME]"
603       
604       \accepts "TabVoice"
605       
606       % 6 strings
607       StaffSymbol \override #'line-count  = #6
608       StaffSymbol \override #'staff-space = #1.5
609
610      % Don't draw stems over the tablature figures !
611       Stem \override #'avoid-note-head = ##t
612       
613       % No accidental in tablature !
614       \remove Accidental_engraver
615       \remove Key_engraver
616
617       % Special "TAB" clef
618       clefGlyph = #"clefs-tab"
619       clefPosition = #0
620 }
621
622 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
623 % but this does not work (is this a bug or intended behaviour?):
624 %
625 % If I try to do so, I get "error: unknown escaped string:
626 % `\VaticanaStaffContext'" in params-init.ly.  If I also move
627 % "\translator { \Vaticana*Context }" from params-init.ly to the end
628 % of gregorian-init.ly, then I get "error: parse error, unexpected
629 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
630 % gregorian-init.ly. --jr
631
632 VaticanaVoiceContext = \translator {
633   \VoiceContext
634   \name "VaticanaVoice"
635   \alias "Voice"
636   \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
637
638   % We can not remove Slur_engraver, since \addlyrics depends on it.
639   % Instead, we make the grob transparent.
640   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
641   % infinite steepness reqd"), since in ligatures, all note heads are in
642   % the same paper column such that the (transparent) slurs eventually may
643   % start and end in the same column.
644   Slur \override #'transparent = ##t
645
646   % We can not remove Stem_engraver, since slurs depend on stems.  If
647   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
648   % in position 1 (expecting grob): ()".
649   % As a workaround, we make the grob transparent.
650   Stem \set #'transparent = ##t
651
652   % Since we do not remove stems, but only make it transparent, we have
653   % to set the length to 0.0.  Otherwise, articulation marks (such as
654   % ictus, circulus or accentus) may be vertically placed quite away from
655   % the note head.
656   Stem \set #'length = #'0.0
657
658   \remove "Ligature_bracket_engraver"
659   \consists "Vaticana_ligature_engraver"
660
661   % Set default head for notes outside of \[ \].
662   NoteHead \set #'style = #'vaticana_punctum
663
664   % Put some space before and after divisiones.
665   % FIXME: This does not seem to show any effect.
666   Script \set #'padding = #0.5
667
668   % There are no beams in Gregorian Chant notation.
669   autobeaming = ##f
670
671   % Prepare TextSpanner for \episem{Initium|Finis} use.
672   TextSpanner \set #'style = #'line
673   TextSpanner \set #'edge-height = #'(0 . 0)
674   TextSpanner \set #'padding = #0.5
675   TextSpanner \set #'enclose-bounds = ##t
676   TextSpanner \set #'edge-text = #'("" . "")
677 }
678
679 VaticanaStaffContext = \translator {
680   \StaffContext
681   \name "VaticanaStaff"
682   \alias "Staff"
683   \denies "Voice"
684   \accepts "VaticanaVoice"
685   \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
686
687   \remove "Time_signature_engraver"
688   \consists "Custos_engraver"
689
690   % We can not remove Bar_engraver; otherwise clefs and custodes will
691   % not show up any more among other line breaking issues.
692   % Instead, we make the grob transparent.
693   BarLine \set #'transparent = ##t
694
695   StaffSymbol \set #'line-count = #4
696   StaffSymbol \set #'thickness = #0.6
697
698   % FIXME: unit on StaffSymbol's width should be \linewidth.
699   % StaffSymbol \set #'width = #60.0
700
701   % Choose vaticana do clef on 3rd line as default.
702   clefGlyph = #"clefs-vaticana_do"
703   centralCPosition = #1
704   clefPosition = #1
705   clefOctavation = #0
706
707   % Select vaticana style font.
708   KeySignature \set #'style = #'vaticana
709   Accidental \set #'style = #'vaticana
710   Custos \set #'style = #'vaticana
711   Custos \set #'neutral-position = #3
712   Custos \set #'neutral-direction = #-1
713   Custos \set #'adjust-if-on-staffline = ##t
714
715   % Score.timing = ##f
716   % Score.barAlways = ##t
717 }
718
719 GregorianTranscriptionVoiceContext = \translator {
720   \VoiceContext
721   \name "GregorianTranscriptionVoice"
722   \alias "Voice"
723
724   % Removing ligature bracket engraver without replacing it by some
725   % other ligature engraver would cause a "Junking event: `LigatureEvent'"
726   % warning for every "\[" and "\]".  Therefore, we make the grob
727   % transparent instead.
728   LigatureBracket \set #'transparent = ##t
729
730   % We can not remove Slur_engraver, since \addlyrics depends on it.
731   % Instead, we make the grob transparent.
732   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
733   % infinite steepness reqd"), since in ligatures, all note heads are in
734   % the same paper column such that the (transparent) slurs eventually may
735   % start and end in the same column.
736   Slur \override #'transparent = ##t
737
738   % We can not remove Stem_engraver, since slurs depend on stems.  If
739   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
740   % in position 1 (expecting grob): ()".
741   % As a workaround, we make the grob transparent.
742   Stem \set #'transparent = ##t
743
744   % Since we do not remove stems, but only make it transparent, we have
745   % to set the length to 0.0.  Otherwise, articulation marks (such as
746   % ictus, circulus or accentus) may be vertically placed quite away from
747   % the note head.
748   Stem \set #'length = #'0.0
749
750   % Put some space before and after divisiones.
751   % FIXME: This does not seem to show any effect.
752   Script \set #'padding = #0.5
753
754   % There are no beams in Gregorian Chant notation.
755   autobeaming = ##f
756
757   % Prepare TextSpanner for \episem{Initium|Finis} use.
758   TextSpanner \set #'style = #'line
759   TextSpanner \set #'edge-height = #'(0 . 0)
760   TextSpanner \set #'padding = #0.5
761   TextSpanner \set #'enclose-bounds = ##t
762   TextSpanner \set #'edge-text = #'("" . "")
763 }
764
765 GregorianTranscriptionStaffContext = \translator {
766   \StaffContext
767   \name "GregorianTranscriptionStaff"
768   \alias "Staff"
769   \denies "Voice"
770   \accepts "GregorianTranscriptionVoice"
771
772   % We can not remove Bar_engraver; otherwise clefs and custodes will
773   % not show up any more among other line breaking issues.
774   % Instead, we make the grob transparent.
775   BarLine \set #'transparent = ##t
776 }