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