]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
00d06183d3f4d4bc97a3b8940464978e1f2e5850
[lilypond.git] / ly / engraver-init.ly
1 \version "1.7.3"
2
3 %
4 % setup for Request->Element conversion. Guru-only
5 %
6
7 StaffContext=\translator {
8         \type "Engraver_group_engraver"
9         \name Staff 
10         \consists "Output_property_engraver"    
11         
12         \consists "Bar_engraver"
13  % Bar_engraver must be first so default bars aren't overwritten
14 % with empty ones.
15         \consists "Font_size_engraver"
16
17 %       \consists "Repeat_engraver"
18         \consists "Volta_engraver"
19         \consists "Separating_line_group_engraver"      
20         SeparatingGroupSpanner \override #'spacing-procedure
21           =  #Separating_group_spanner::set_spacing_rods_and_seqs
22         \consists "Dot_column_engraver"
23
24         \consists "Clef_engraver"
25         \consists "Key_engraver"
26         \consists "Time_signature_engraver"
27         \consists "Staff_symbol_engraver"
28         \consists "Collision_engraver"
29         \consists "Rest_collision_engraver"
30         \consists "Accidental_engraver"
31         \consists "Piano_pedal_engraver"
32         \consists "Instrument_name_engraver"
33         \consists "Grob_pq_engraver"
34         \consists "Forbid_line_break_engraver"
35         \consistsend "Axis_group_engraver"
36
37         minimumVerticalExtent = #'(-6 . 6)
38         extraVerticalExtent = ##f
39         verticalExtent = ##f 
40         localKeySignature = #'()
41
42         % explicitly set instrument, so we don't get 
43         % weird effects when doing instrument names for
44         % piano staves
45
46         instrument = #'()
47         instr = #'()
48           
49         \accepts "Voice"
50 }
51
52
53 StaffContainerContext = \translator {
54         \type Engraver_group_engraver
55         \consists "Axis_group_engraver"
56         minimumVerticalExtent = ##f
57         extraVerticalExtent = ##f
58         verticalExtent = ##f 
59         localKeySignature = #'()
60
61         \accepts Staff
62         \name StaffContainer
63 }
64
65 InnerChoirStaffContext = \translator {
66         \type "Engraver_group_engraver"
67         \name InnerChoirStaff
68         %% alignmentReference = #0 FIXME
69         \consists "System_start_delimiter_engraver"
70         systemStartDelimiter = #'SystemStartBracket
71         localKeySignature = #'()
72
73         \accepts "Staff"
74         \accepts "RhythmicStaff"
75         \accepts "GrandStaff"
76         \accepts "PianoStaff"
77         \accepts "Lyrics"
78         \accepts "ChordNames"
79 }
80 ChoirStaffContext = \translator {
81         \InnerChoirStaffContext
82         \name ChoirStaff
83         \accepts "InnerChoirStaff"
84         \accepts "InnerStaffGroup"
85 }
86
87
88 RhythmicStaffContext=\translator{
89         \type "Engraver_group_engraver"
90         
91         \consists "Output_property_engraver"    
92
93
94         minimumVerticalExtent = ##f
95         extraVerticalExtent = ##f
96         verticalExtent = ##f 
97         localKeySignature = #'()
98
99         \consists "Pitch_squash_engraver"
100         \consists "Separating_line_group_engraver"      
101         \name RhythmicStaff
102         \alias "Staff"
103         
104         BarLine \override #'bar-size = #4
105         VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
106         VoltaBracket \override #'padding =  #5  % urg, in \pt
107         StaffSymbol \override #'line-count = #1 
108
109         Stem \override #'neutral-direction = #1
110         Beam \override #'neutral-direction = #1         
111 %       \consists "Repeat_engraver"
112         \consists "Dot_column_engraver"
113         \consists "Volta_engraver"
114         \consists "Bar_engraver"
115         \consists "Time_signature_engraver"
116         \consists "Staff_symbol_engraver"
117         \consists "Instrument_name_engraver"
118         \consistsend "Axis_group_engraver"
119         \accepts "Voice"
120 }
121
122
123 VoiceContext = \translator {
124         \type "Engraver_group_engraver"
125         \name Voice
126
127
128         localKeySignature = #'()
129         \consists "Font_size_engraver"
130         
131         % must come before all
132         \consists "Voice_devnull_engraver"
133         \consists "Output_property_engraver"    
134         \consists "Arpeggio_engraver"
135         \consists "Multi_measure_rest_engraver"
136         \consists "Text_spanner_engraver"
137         \consists "Grob_pq_engraver"
138
139         \consists "Ligature_bracket_engraver"
140         \consists "Breathing_sign_engraver"
141         % \consists "Rest_engraver"
142         \consists "Stem_engraver"
143         \consists "Beam_engraver"
144         \consists "Grace_beam_engraver"
145         \consists "Auto_beam_engraver"
146         \consists "New_fingering_engraver"
147         \consists "Chord_tremolo_engraver"
148         \consists "Percent_repeat_engraver"
149         \consists "Melisma_engraver"
150
151 %{
152  Must come before text_engraver, but after note_column engraver.
153
154 %}
155         \consists "Text_engraver"
156         \consists "Dynamic_engraver"
157         \consists "Fingering_engraver"
158
159         \consists "Script_engraver"
160         \consists "Script_column_engraver"
161         \consists "Rhythmic_column_engraver"
162         \consists "Phrasing_slur_engraver"
163         \consists "Cluster_engraver"
164         \consists "Slur_engraver"
165         \consists "Tie_engraver"
166         \consists "New_tie_engraver"
167         \consists "Porrectus_engraver"
168         \consists "Tuplet_engraver"
169         \consists "A2_engraver"
170
171         \consists "Skip_req_swallow_translator"
172         \accepts Thread % bug if you leave out this!
173 }
174
175 ThreadContext = \translator{
176         \type Engraver_group_engraver
177         \name Thread
178         localKeySignature = #'()
179
180         \consists "Font_size_engraver"  
181         \consists "Thread_devnull_engraver"
182         \consists "Note_heads_engraver"
183         \consists "Rest_engraver"
184
185         % why here ? 
186         \consists "Note_head_line_engraver"
187         \consists "Output_property_engraver"    
188
189 }
190
191
192
193 GrandStaffContext=\translator{
194         \type "Engraver_group_engraver"
195         \name GrandStaff
196         localKeySignature = #'()
197         \consists "Span_bar_engraver"
198         \consists "Span_arpeggio_engraver"
199         \consists "System_start_delimiter_engraver"
200         systemStartDelimiter = #'SystemStartBrace
201
202         \accepts "Staff"
203 }
204
205 PianoStaffContext = \translator{
206         \GrandStaffContext
207         \name "PianoStaff"
208         \alias "GrandStaff"
209
210         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
211         VerticalAlignment \override #'forced-distance = #12
212         VerticalAlignment \override #'self-alignment-Y = #0
213
214         \consists "Vertical_align_engraver"
215         \consists "Instrument_name_engraver"
216         
217         instrument = #'()
218         instr = #'()
219         
220 %       \consistsend "Axis_group_engraver"
221 }
222
223 InnerStaffGroupContext= \translator {
224         \type "Engraver_group_engraver"
225         \name InnerStaffGroup
226         localKeySignature = #'()
227
228         \consists "Span_bar_engraver"
229         \consists "Span_arpeggio_engraver"
230         \consists "Output_property_engraver"    
231         systemStartDelimiter = #'SystemStartBracket
232
233         \consists "System_start_delimiter_engraver"
234         \accepts "Staff"
235         \accepts "RhythmicStaff"
236         \accepts "GrandStaff"
237         \accepts "PianoStaff"
238         \accepts "TabStaff"     
239         \accepts "Lyrics"
240         \accepts "ChordNames"
241 }
242 StaffGroupContext = \translator {
243         \InnerStaffGroupContext
244         \name StaffGroup
245         \accepts "InnerChoirStaff"
246         \accepts "ChoirStaff"
247         \accepts "InnerStaffGroup"
248         \accepts "FiguredBass"
249 }
250
251
252 % UGH! JUNKME
253 LyricsVoiceContext= \translator{
254         \type "Engraver_group_engraver"
255         \consistsend "Axis_group_engraver"
256         minimumVerticalExtent = #'(-1.2 . 1.2)
257         extraVerticalExtent = ##f
258         verticalExtent = ##f 
259         \name LyricsVoice 
260         \consists "Separating_line_group_engraver"
261         \consists "Lyric_engraver"
262         \consists "Extender_engraver"
263         \consists "Hyphen_engraver"
264         \consists "Stanza_number_engraver"
265         \consists "Skip_req_swallow_translator"
266         phrasingPunctuation = #".,:!?\""
267         
268 }
269 NoteNamesContext = \translator {
270         \type "Engraver_group_engraver"
271         \name NoteNames
272         \consistsend "Axis_group_engraver"
273
274         minimumVerticalExtent = ##f
275         extraVerticalExtent = ##f
276         verticalExtent = ##f 
277
278         
279         \consists "Note_name_engraver"
280         \consists "Separating_line_group_engraver"
281 }
282
283 LyricsContext = \translator {
284         \type "Engraver_group_engraver"
285         \name Lyrics
286         
287         %% To get folded repeats right.
288         \consists Vertical_align_engraver 
289
290         \consistsend "Axis_group_engraver"
291         minimumVerticalExtent = ##f
292         extraVerticalExtent = ##f
293         verticalExtent = ##f 
294         
295         \accepts "LyricsVoice"
296 }
297
298
299 ChordNamesContext = \translator {
300         \type "Engraver_group_engraver"
301         \name ChordNames
302
303         \consists "Output_property_engraver"    
304         \consists "Separating_line_group_engraver"
305         \consists "New_chord_name_engraver"
306         \consists "Skip_req_swallow_translator"
307         \consistsend "Axis_group_engraver"
308         minimumVerticalExtent = ##f
309         extraVerticalExtent = ##f
310         verticalExtent = ##f 
311 }
312
313
314
315 StupidScore = \translator {
316         \type "Score_engraver"
317         \name Score
318         \consists "Note_heads_engraver"
319 }
320
321
322
323
324 HaraKiriStaffContext = \translator {
325         \StaffContext
326         \remove "Axis_group_engraver"
327         \consistsend "Hara_kiri_engraver"
328         \consists "Instrument_name_engraver"
329         \accepts "Voice"
330
331         % hara kiri & auto knee don't work together.
332         Beam \override #'auto-knee-gap = #'()
333 }
334
335 %{
336   The HaraKiriStaffContexts doesn't override \name,
337   so it is still named `Staff'.
338
339   %\translator { \HaraKiriStaffContext }
340 %}
341
342
343
344
345 ScoreContext = \translator {
346         \type Score_engraver
347         \name Score
348         localKeySignature = #'()
349         
350         \consists "Repeat_acknowledge_engraver"
351         \consists "Staff_collecting_engraver"
352
353         % move the alias along with the engraver.
354
355         %% TODO? add this alias from Timing_engraver::initialize() ? 
356         \consists "Timing_engraver"
357         \alias "Timing"
358         
359         \consists "Output_property_engraver"
360         \consists "System_start_delimiter_engraver"
361         \consists "Mark_engraver"       
362         \consists "Break_align_engraver"
363         \consists "Spacing_engraver"
364         \consists "Vertical_align_engraver"
365         \consists "Lyric_phrasing_engraver"
366         \consists "Bar_number_engraver"
367         \consists "Span_arpeggio_engraver"
368
369         \accepts "Staff"
370         \accepts "TabStaff"
371         \accepts "StaffContainer"
372         \accepts "StaffGroup"
373         \accepts "RhythmicStaff"        
374         \accepts "Lyrics"
375         \accepts "ChordNames"
376         \accepts "GrandStaff"
377         \accepts "ChoirStaff"
378         \accepts "PianoStaff"
379         \accepts "NoteNames"
380         \accepts "FiguredBass"  
381
382         soloText = #"Solo"
383         soloIIText = #"Solo II"
384         aDueText = #"a2"
385         soloADue = ##t
386         splitInterval = #'(0 . 1)
387         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
388         systemStartDelimiter =#'SystemStartBar
389
390
391         %% name, glyph id, clef position 
392         %% where is c0 in this clef?
393         clefGlyph = #"clefs-G"
394         clefPosition = #-2
395         centralCPosition = #-6
396         
397         automaticPhrasing = ##t
398         automaticMelismata = ##t
399         
400         defaultBarType = #"|"
401         barNumberVisibility = #default-bar-number-visibility
402
403         explicitClefVisibility = #all-visible
404         explicitKeySignatureVisibility = #all-visible
405         autoBeamSettings = #auto-beam-settings
406         autoBeaming = ##t
407         scriptDefinitions = #default-script-alist
408
409         verticalAlignmentChildCallback = #Align_interface::alignment_callback
410
411         pedalSustainStrings = #'("Ped." "*Ped." "*")
412         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
413
414         %% These are in ordinary italic font, including the *,
415         %% but they are unlikely to be used, 
416         %% as the default pedal-style for SostenutoPedal is 'mixed':
417         %% i.e.  Sost. Ped_____________________ 
418         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
419
420         tupletNumberFormatFunction = #denominator-tuplet-formatter
421         
422         subdivideBeams = ##f
423         extraNatural = ##t
424         autoAccidentals = #'(Staff (same-octave . 0))
425         autoCautionaries = #'()  
426
427        keyAccidentalOrder = #'(
428          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
429          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
430          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
431          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
432         )
433         breakAlignOrder = #'(
434           instrument-name
435           left-edge
436           ambitus
437           span-bar
438           breathing-sign
439           clef
440           key-signature
441           staff-bar
442           time-signature
443           custos
444         )
445         barCheckSynchronize = ##t
446
447         %% chord names:
448         chordNameFunction = #ignatzek-chord-names
449         majorSevenSymbol = #whiteTriangleMarkup
450         chordNameSeparator = #(make-simple-markup  "/")
451         chordNameExceptions = #ignatzekExceptions
452
453         %% tablature:
454         stringOneTopmost = ##t
455         highStringOne = ##t
456
457         %% One may change the strings tuning as following :
458         %% The lenght of the list must be equal to the number of string
459       
460         stringTunings   = #guitar-tunings
461         tablatureFormat = #fret-number-tablature-format
462
463         \grobdescriptions #all-grob-descriptions
464 }
465
466 OrchestralScoreContext= \translator {
467         \ScoreContext
468 }
469 EasyNotation =  \translator {
470         \ScoreContext
471         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
472 }
473
474 % retain for compatibility reasons (FIXME: convert-ly)
475 GraceContext = \translator {
476         \type "Engraver_group_engraver"
477 }
478
479 FiguredBassContext = \translator {
480         \type "Engraver_group_engraver"
481         \name FiguredBass 
482         \consists "Figured_bass_engraver"       
483         \consistsend "Axis_group_engraver"
484 }
485
486
487 TabVoiceContext =   \translator {
488       \VoiceContext
489       \name "TabVoice"
490       \denies "Thread"
491       \consists "Tab_note_heads_engraver"
492
493       Slur \override #'font-family       = #'roman
494       Slur \override #'molecule-callback = #hammer-molecule-callback
495       Slur \override #'direction    = #-1
496
497       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
498       % This feature is now disabled because most of the tab does not use it.
499       %Beam \override #'damping = #100000
500       %Stem \override #'up-to-staff = ##t
501
502       % No accidental in tablature !
503       \remove Accidental_engraver
504 }
505
506 TabStaffContext = \translator {
507       \StaffContext
508       \alias "Staff"
509       \name "TabStaff"
510       \denies "Voice"
511       \accepts "TabVoice"
512       
513       % 6 strings
514       StaffSymbol \override #'line-count  = #6
515       StaffSymbol \override #'staff-space = #1.5
516
517      % Don't draw stems over the tablature figures !
518       Stem \override #'avoid-note-head = ##t
519       
520       % No accidental in tablature !
521       \remove Accidental_engraver
522       \remove Key_engraver
523
524       % Special "TAB" clef
525       clefGlyph = #"clefs-tab"
526       clefPosition = #0
527       
528
529 }
530