]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* lily/parser.yy (part_combined_music): remove old PC cruft.
[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
122         VoltaBracket \override #'padding =  #5
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         \consists "Output_property_engraver"    
155         \consists "Arpeggio_engraver"
156         \consists "Multi_measure_rest_engraver"
157         \consists "Text_spanner_engraver"
158         \consists "Grob_pq_engraver"
159
160         \consists "Note_head_line_engraver"
161         \consists "Glissando_engraver"
162         \consists "Ligature_bracket_engraver"
163         \consists "Breathing_sign_engraver"
164         % \consists "Rest_engraver"
165         \consists "Stem_engraver"
166         \consists "Beam_engraver"
167         \consists "Grace_beam_engraver"
168         \consists "Auto_beam_engraver"
169         \consists "New_fingering_engraver"
170         \consists "Chord_tremolo_engraver"
171         \consists "Percent_repeat_engraver"
172         \consists "Slash_repeat_engraver"
173         \consists "Melisma_engraver"
174         \consists "Part_combine_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
193         \consists "Skip_event_swallow_translator"
194         \accepts Thread % bug if you leave out this!
195 }
196
197 \translator{
198         \type Engraver_group_engraver
199         \name Thread
200         localKeySignature = #'()
201 \description "
202     Handles note heads, and is contained in the Voice context.  You
203     have to instantiate this explicitly if you want to adjust the
204     style of individual note heads.
205 "
206         \consists "Font_size_engraver"  
207         \consists "Note_heads_engraver"
208         \consists "Rest_engraver"
209
210         % why here ? 
211         \consists "Output_property_engraver"    
212 }
213
214
215 \translator{
216         \type "Engraver_group_engraver"
217         \name GrandStaff
218         localKeySignature = #'()
219         
220         \description " A group of staffs, with a brace on the left
221     side, grouping the staves together.  The bar lines of the
222     contained staves are connected vertically.  "
223
224         \consists "Span_bar_engraver"
225         \consists "Span_arpeggio_engraver"
226         \consists "System_start_delimiter_engraver"
227         systemStartDelimiter = #'SystemStartBrace
228
229         \accepts "Staff"
230 }
231
232 \translator{
233         \GrandStaffContext
234         \name "PianoStaff"
235         \alias "GrandStaff"
236 \description "
237     Just like @code{GrandStaff} but with @code{minVerticalAlign} set
238     equal to @code{maxVerticalAlign} so that interstaff beaming and
239     slurring can be used."
240         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
241         VerticalAlignment \override #'forced-distance = #12
242         VerticalAlignment \override #'self-alignment-Y = #0
243
244         \consists "Vertical_align_engraver"
245         \consists "Instrument_name_engraver"
246         
247         instrument = #'()
248         instr = #'()
249         
250 %       \consistsend "Axis_group_engraver"
251 }
252
253 \translator {
254         \type "Engraver_group_engraver"
255         \name InnerStaffGroup
256         localKeySignature = #'()
257
258         \consists "Span_bar_engraver"
259         \consists "Span_arpeggio_engraver"
260         \consists "Output_property_engraver"    
261         systemStartDelimiter = #'SystemStartBracket
262
263         \consists "System_start_delimiter_engraver"
264         \accepts "Staff"
265         \accepts "RhythmicStaff"
266         \accepts "GrandStaff"
267         \accepts "PianoStaff"
268         \accepts "TabStaff"     
269         \accepts "Lyrics"
270         \accepts "ChordNames"
271 }
272
273 \translator {
274         \InnerStaffGroupContext
275         \name StaffGroup
276         
277         \description
278
279         " Groups staffs while adding a bracket on the left side,
280         grouping the staves together.  The bar lines of the contained
281         staves are connected vertically.
282 "
283         
284         \accepts "InnerChoirStaff"
285         \accepts "ChoirStaff"
286         \accepts "InnerStaffGroup"
287         \accepts "FiguredBass"
288 }
289
290
291 % UGH! JUNKME
292 \translator{
293         \type "Engraver_group_engraver"
294         \consistsend "Hara_kiri_engraver"
295         minimumVerticalExtent = #'(-1.2 . 2.4)
296         extraVerticalExtent = ##f
297         verticalExtent = ##f
298
299         \description "
300     Corresponds to a voice with lyrics.  Handles the printing of a
301     single line of lyrics.
302 "
303         
304         \name LyricsVoice 
305         \consists "Separating_line_group_engraver"
306         \consists "Lyric_engraver"
307         \consists "Extender_engraver"
308         \consists "Hyphen_engraver"
309         \consists "Stanza_number_engraver"
310         \consists "Vocal_name_engraver"
311         \consists "Skip_event_swallow_translator"
312         SeparationItem \set #'padding = #0.5
313 }
314 \translator {
315         \type "Engraver_group_engraver"
316         \name NoteNames
317         \consistsend "Axis_group_engraver"
318
319         minimumVerticalExtent = ##f
320         extraVerticalExtent = ##f
321         verticalExtent = ##f 
322
323         
324         \consists "Rest_swallow_translator" 
325         \consists "Skip_event_swallow_translator"
326         \consists "Tie_engraver"
327         \consists "Note_swallow_translator"
328         \consists "Note_name_engraver"
329         \consists "Separating_line_group_engraver"
330 }
331
332 \translator {
333         \type "Engraver_group_engraver"
334         \name Lyrics
335         \description  "Typesets lyrics."
336         
337         %% To get folded repeats right.
338         \consists Vertical_align_engraver 
339
340         minimumVerticalExtent = ##f
341         extraVerticalExtent = ##f
342         verticalExtent = ##f 
343         
344         \accepts "LyricsVoice"
345 }
346
347
348 \translator {
349         \type "Engraver_group_engraver"
350         \name ChordNames
351         \description "Typesets chord names."
352         
353         \consists "Rest_swallow_translator" 
354         \consists "Output_property_engraver"    
355         \consists "Separating_line_group_engraver"
356         \consists "Chord_name_engraver"
357         \consists "Skip_event_swallow_translator"
358         \consistsend "Hara_kiri_engraver"
359         
360         minimumVerticalExtent = #'(0 . 2.5)
361         extraVerticalExtent = ##f
362         SeparatingGroupSpanner \override #'padding = #0.8
363         verticalExtent = ##f 
364 }
365
366
367 RemoveEmptyStaffContext= \translator {
368         \StaffContext
369         \remove "Axis_group_engraver"
370         \consistsend "Hara_kiri_engraver"
371         \accepts "Voice"
372
373         % hara kiri & auto knee don't work together.
374         Beam \override #'auto-knee-gap = #'()
375 }
376
377 AncientRemoveEmptyStaffContext = \translator {
378     %% why not add by default?
379     
380         \RemoveEmptyStaffContext
381         \accepts "VaticanaVoice"
382         \accepts "GregorianTranscriptionVoice"
383 }
384
385 \translator {
386         \type Score_engraver
387         \name Score
388         localKeySignature = #'()
389
390         \description "This is the top level notation context.  No
391     other context can contain a @code{Score} context.  This context
392     handles the administration of time signatures.  It also makes sure
393     that items such as clefs, time signatures, and key-signatures are
394     aligned across staves.
395
396     You cannot explicitly instantiate a Score context (since it is
397     not contained in any other context).  It is instantiated
398     automatically when an output definition (a @code{\score} or
399     @code{\paper} block) is processed."
400         
401         \consists "Repeat_acknowledge_engraver"
402         \consists "Staff_collecting_engraver"
403
404         % move the alias along with the engraver.
405
406         %% TODO? add this alias from Timing_engraver::initialize() ? 
407         \consists "Timing_engraver"
408         \alias "Timing"
409         
410         \consists "Output_property_engraver"
411         \consists "System_start_delimiter_engraver"
412         \consists "Mark_engraver"       
413         \consists "Metronome_mark_engraver"     
414         \consists "Break_align_engraver"
415         \consists "Spacing_engraver"
416         \consists "Vertical_align_engraver"
417         \consists "Lyric_phrasing_engraver"
418         \consists "Bar_number_engraver"
419         \consists "Span_arpeggio_engraver"
420
421         \accepts "Staff"
422         \accepts "TabStaff"
423         \accepts "VaticanaStaff"
424         \accepts "GregorianTranscriptionStaff"
425         \accepts "StaffContainer"
426         \accepts "StaffGroup"
427         \accepts "RhythmicStaff"
428         \accepts "Lyrics"
429         \accepts "ChordNames"
430         \accepts "GrandStaff"
431         \accepts "ChoirStaff"
432         \accepts "PianoStaff"
433         \accepts "Devnull"
434         \accepts "NoteNames"
435         \accepts "FiguredBass"
436
437         soloText = #"Solo"
438         soloIIText = #"Solo II"
439         aDueText = #"a2"
440         soloADue = ##t
441         systemStartDelimiter =#'SystemStartBar
442
443         melismaBusyProperties = #default-melisma-properties
444         
445         clefGlyph = #"clefs-G"
446         clefPosition = #-2
447         centralCPosition = #-6
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         markFormatter = #format-mark-letters
476         rehearsalMark = #1 
477         subdivideBeams = ##f
478         allowBeamBreak = ##f
479         extraNatural = ##t
480         autoAccidentals = #'(Staff (same-octave . 0))
481         autoCautionaries = #'()  
482
483        keyAccidentalOrder = #`(
484          (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
485          (3  . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
486          (6 . ,DOUBLE-FLAT) (2  . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1  . ,DOUBLE-FLAT) (4  . ,DOUBLE-FLAT) (0  . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
487          (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
488         )
489         breakAlignOrder = #'(
490           instrument-name
491           left-edge
492           ambitus
493           breathing-sign
494           clef
495           rehearsal-mark
496           staff-bar
497           key-signature
498           time-signature
499           custos
500         )
501         barCheckSynchronize = ##f
502         
503         %% chord names:
504         chordNameFunction = #ignatzek-chord-names
505         majorSevenSymbol = #whiteTriangleMarkup
506         chordNameSeparator = #(make-simple-markup  "/")
507         chordNameExceptions = #ignatzekExceptions
508         chordNoteNamer = #'()
509         chordRootNamer = #note-name->markup
510
511         chordNameExceptionsFull = #fullJazzExceptions
512         chordNameExceptionsPartial = #partialJazzExceptions
513         
514         %% tablature:
515         stringOneTopmost = ##t
516         highStringOne = ##t
517
518         %% One may change the strings tuning as following :
519         %% The lenght of the list must be equal to the number of string
520         stringTunings   = #guitar-tunings
521         tablatureFormat = #fret-number-tablature-format
522
523         %%
524         bassFigureFormatFunction = #make-bass-figure-markup
525         metronomeMarkFormatter = #format-metronome-markup
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-size -3)
535                  (Voice NoteHead  font-size -3)
536                  (Voice Dots  font-size -3)
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-size -4)
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         NoteHead \override #'Y-extent-callback = #'()
567         NoteHead \override #'X-extent-callback = #'()
568 }
569
570
571
572 \translator {
573         \type "Engraver_group_engraver"
574         \name FiguredBass 
575         \consists "Figured_bass_engraver"
576         \consists "Rest_swallow_translator"
577         \consists "Note_swallow_translator"
578         \consists "Separating_line_group_engraver"
579         
580         \consistsend "Hara_kiri_engraver"
581 }
582
583 \translator {
584     \name "Devnull"
585     \type "Engraver_group_engraver"
586
587     %% don't want to route anything out of here: 
588     \alias "Staff"
589     \alias "Timing"
590     \alias "Voice"
591     \consists "Swallow_engraver"
592     \description "Silently discards all musical information given to this context. "
593     }
594
595 \translator {
596       \VoiceContext
597       \name "TabVoice"
598       \denies "Thread"
599       \consists "Tab_note_heads_engraver"
600       \remove "Fingering_engraver"
601       \remove "New_fingering_engraver"
602
603       \description "Context for drawing notes in a Tab staff. "
604       Slur \override #'font-family       = #'roman
605       Slur \override #'molecule-callback = #hammer-molecule-callback
606       Slur \override #'direction    = #-1
607
608       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
609       % This feature is now disabled because most of the tab does not use it.
610       %Beam \override #'damping = #100000
611       %Stem \override #'up-to-staff = ##t
612
613       % No accidental in tablature !
614       \remove Accidental_engraver
615 }
616
617 \translator {
618       \StaffContext
619       \alias "Staff"
620       \name "TabStaff"
621       \denies "Voice"
622
623       \description "Context for generating tablature. [DOCME]"
624
625 %{
626       TODO: this context should use a special staff_symbol engraver that
627       takes the line count out of the stringTunings property.
628
629 %}
630       
631       
632       \accepts "TabVoice"
633       
634       % 6 strings
635       StaffSymbol \override #'line-count  = #6
636       StaffSymbol \override #'staff-space = #1.5
637
638      % Don't draw stems over the tablature figures !
639       Stem \override #'avoid-note-head = ##t
640       
641       % No accidental in tablature !
642       \remove "Accidental_engraver"
643       \remove "Key_engraver"
644       \remove "String_number_engraver"
645       % Special "TAB" clef
646       clefGlyph = #"clefs-tab"
647       clefPosition = #0
648 }
649
650 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
651 % but this does not work (is this a bug or intended behaviour?):
652 %
653 % If I try to do so, I get "error: unknown escaped string:
654 % `\VaticanaStaffContext'" in params-init.ly.  If I also move
655 % "\translator { \Vaticana*Context }" from params-init.ly to the end
656 % of gregorian-init.ly, then I get "error: parse error, unexpected
657 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
658 % gregorian-init.ly. --jr
659
660 \translator {
661   \VoiceContext
662   \name "VaticanaVoice"
663   \alias "Voice"
664   \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
665
666   % We can not remove Slur_engraver, since \addlyrics depends on it.
667   % Instead, we make the grob transparent.
668   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
669   % infinite steepness reqd"), since in ligatures, all note heads are in
670   % the same paper column such that the (transparent) slurs eventually may
671   % start and end in the same column.
672   Slur \override #'transparent = ##t
673
674   % We can not remove Stem_engraver, since slurs depend on stems.  If
675   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
676   % in position 1 (expecting grob): ()".
677   % As a workaround, we make the grob transparent.
678   Stem \set #'transparent = ##t
679
680   % Since we do not remove stems, but only make it transparent, we have
681   % to set the length to 0.0.  Otherwise, articulation marks (such as
682   % ictus, circulus or accentus) may be vertically placed quite away from
683   % the note head.
684   Stem \set #'length = #'0.0
685
686   \remove "Ligature_bracket_engraver"
687   \consists "Vaticana_ligature_engraver"
688
689   % Set default head for notes outside of \[ \].
690   NoteHead \set #'style = #'vaticana_punctum
691
692   % Put some space before and after divisiones.
693   % FIXME: This does not seem to show any effect.
694   Script \set #'padding = #0.5
695
696   % There are no beams in Gregorian Chant notation.
697   autobeaming = ##f
698
699   % Prepare TextSpanner for \episem{Initium|Finis} use.
700   TextSpanner \set #'style = #'line
701   TextSpanner \set #'edge-height = #'(0 . 0)
702   TextSpanner \set #'padding = #0.5
703   TextSpanner \set #'enclose-bounds = #1
704   TextSpanner \set #'edge-text = #'("" . "")
705 }
706
707 \translator {
708   \StaffContext
709   \name "VaticanaStaff"
710   \alias "Staff"
711   \denies "Voice"
712   \accepts "VaticanaVoice"
713   \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
714
715   \remove "Time_signature_engraver"
716   \consists "Custos_engraver"
717
718   % We can not remove Bar_engraver; otherwise clefs and custodes will
719   % not show up any more among other line breaking issues.
720   % Instead, we make the grob transparent.
721   BarLine \set #'transparent = ##t
722
723   StaffSymbol \set #'line-count = #4
724   StaffSymbol \set #'thickness = #0.6
725
726   % FIXME: unit on StaffSymbol's width should be \linewidth.
727   % StaffSymbol \set #'width = #60.0
728
729   % Choose vaticana do clef on 3rd line as default.
730   clefGlyph = #"clefs-vaticana_do"
731   centralCPosition = #1
732   clefPosition = #1
733   clefOctavation = #0
734
735   % Select vaticana style font.
736   KeySignature \set #'style = #'vaticana
737   Accidental \set #'style = #'vaticana
738   Custos \set #'style = #'vaticana
739   Custos \set #'neutral-position = #3
740   Custos \set #'neutral-direction = #-1
741   Custos \set #'adjust-if-on-staffline = ##t
742
743   % Score.timing = ##f
744   % Score.barAlways = ##t
745 }
746
747 \translator {
748   \VoiceContext
749   \name "GregorianTranscriptionVoice"
750   \alias "Voice"
751
752   % Removing ligature bracket engraver without replacing it by some
753   % other ligature engraver would cause a "Junking event: `LigatureEvent'"
754   % warning for every "\[" and "\]".  Therefore, we make the grob
755   % transparent instead.
756   LigatureBracket \set #'transparent = ##t
757
758   % We can not remove Slur_engraver, since \addlyrics depends on it.
759   % Instead, we make the grob transparent.
760   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
761   % infinite steepness reqd"), since in ligatures, all note heads are in
762   % the same paper column such that the (transparent) slurs eventually may
763   % start and end in the same column.
764   Slur \override #'transparent = ##t
765
766   % We can not remove Stem_engraver, since slurs depend on stems.  If
767   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
768   % in position 1 (expecting grob): ()".
769   % As a workaround, we make the grob transparent.
770   Stem \set #'transparent = ##t
771
772   % Since we do not remove stems, but only make it transparent, we have
773   % to set the length to 0.0.  Otherwise, articulation marks (such as
774   % ictus, circulus or accentus) may be vertically placed quite away from
775   % the note head.
776   Stem \set #'length = #'0.0
777
778   % Put some space before and after divisiones.
779   % FIXME: This does not seem to show any effect.
780   Script \set #'padding = #0.5
781
782   % There are no beams in Gregorian Chant notation.
783   autobeaming = ##f
784
785   % Prepare TextSpanner for \episem{Initium|Finis} use.
786   TextSpanner \set #'style = #'line
787   TextSpanner \set #'edge-height = #'(0 . 0)
788   TextSpanner \set #'padding = #0.5
789   TextSpanner \set #'enclose-bounds = #1
790   TextSpanner \set #'edge-text = #'("" . "")
791 }
792  \translator {
793   \StaffContext
794   \name "GregorianTranscriptionStaff"
795   \alias "Staff"
796   \denies "Voice"
797   \accepts "GregorianTranscriptionVoice"
798
799   % We can not remove Bar_engraver; otherwise clefs and custodes will
800   % not show up any more among other line breaking issues.
801   % Instead, we make the grob transparent.
802   BarLine \set #'transparent = ##t
803 }