]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* scm/backend-documentation-lib.scm (check-dangling-properties):
[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 = ##f
47         instr = ##f
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 "Slur_engraver"
164         \consists "Tie_engraver"
165         %%\consists "New_tie_engraver"
166         \consists "Porrectus_engraver"
167         \consists "Tuplet_engraver"
168         \consists "A2_engraver"
169
170         \consists "Skip_req_swallow_translator"
171         \accepts Thread % bug if you leave out this!
172 }
173
174 ThreadContext = \translator{
175         \type Engraver_group_engraver
176         \name Thread
177         localKeySignature = #'()
178
179         \consists "Font_size_engraver"  
180         \consists "Thread_devnull_engraver"
181         \consists "Note_heads_engraver"
182         \consists "Rest_engraver"
183         \consists "Note_head_line_engraver"
184         \consists "Output_property_engraver"    
185
186 }
187
188
189
190 GrandStaffContext=\translator{
191         \type "Engraver_group_engraver"
192         \name GrandStaff
193         localKeySignature = #'()
194         \consists "Span_bar_engraver"
195         \consists "Span_arpeggio_engraver"
196         \consists "System_start_delimiter_engraver"
197         systemStartDelimiter = #'SystemStartBrace
198
199         \accepts "Staff"
200 }
201
202 PianoStaffContext = \translator{
203         \GrandStaffContext
204         \name "PianoStaff"
205         \alias "GrandStaff"
206
207         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
208         VerticalAlignment \override #'forced-distance = #12
209         VerticalAlignment \override #'self-alignment-Y = #0
210
211         \consists "Vertical_align_engraver"
212         \consists "Instrument_name_engraver"
213         
214         instrument = #'()
215         instr = #'()
216         
217 %       \consistsend "Axis_group_engraver"
218 }
219
220 InnerStaffGroupContext= \translator {
221         \type "Engraver_group_engraver"
222         \name InnerStaffGroup
223         localKeySignature = #'()
224
225         \consists "Span_bar_engraver"
226         \consists "Span_arpeggio_engraver"
227         \consists "Output_property_engraver"    
228         systemStartDelimiter = #'SystemStartBracket
229
230         \consists "System_start_delimiter_engraver"
231         \accepts "Staff"
232         \accepts "RhythmicStaff"
233         \accepts "GrandStaff"
234         \accepts "PianoStaff"
235         \accepts "TabStaff"     
236         \accepts "Lyrics"
237         \accepts "ChordNames"
238 }
239 StaffGroupContext = \translator {
240         \InnerStaffGroupContext
241         \name StaffGroup
242         \accepts "InnerChoirStaff"
243         \accepts "ChoirStaff"
244         \accepts "InnerStaffGroup"
245         \accepts "FiguredBass"
246 }
247
248
249 % UGH! JUNKME
250 LyricsVoiceContext= \translator{
251         \type "Engraver_group_engraver"
252         \consistsend "Axis_group_engraver"
253         minimumVerticalExtent = #(cons -1.2 1.2)
254         extraVerticalExtent = ##f
255         verticalExtent = ##f 
256         \name LyricsVoice 
257         \consists "Separating_line_group_engraver"
258         \consists "Lyric_engraver"
259         \consists "Extender_engraver"
260         \consists "Hyphen_engraver"
261         \consists "Stanza_number_engraver"
262         \consists "Skip_req_swallow_translator"
263         phrasingPunctuation = #".,:!?\""
264         
265 }
266 NoteNamesContext = \translator {
267         \type "Engraver_group_engraver"
268         \name NoteNames
269         \consistsend "Axis_group_engraver"
270
271         minimumVerticalExtent = ##f
272         extraVerticalExtent = ##f
273         verticalExtent = ##f 
274
275         
276         \consists "Note_name_engraver"
277         \consists "Separating_line_group_engraver"
278 }
279
280 LyricsContext = \translator {
281         \type "Engraver_group_engraver"
282         \name Lyrics
283         \consists Vertical_align_engraver %need this for getting folded repeats right.
284
285
286         \consistsend "Axis_group_engraver"
287         minimumVerticalExtent = ##f
288         extraVerticalExtent = ##f
289         verticalExtent = ##f 
290         
291         \accepts "LyricsVoice"
292 }
293
294
295 ChordNamesContext = \translator {
296         \type "Engraver_group_engraver"
297         \name ChordNames
298
299
300
301
302         \consists "Output_property_engraver"    
303         \consists "Separating_line_group_engraver"
304         \consists "Chord_name_engraver"
305         \consists "Skip_req_swallow_translator"
306         \consistsend "Axis_group_engraver"
307         minimumVerticalExtent = ##f
308         extraVerticalExtent = ##f
309         verticalExtent = ##f 
310 }
311
312
313
314 StupidScore = \translator {
315         \type "Score_engraver"
316         \name Score
317         \consists "Note_heads_engraver"
318 }
319
320
321
322
323 HaraKiriStaffContext = \translator {
324         \StaffContext
325         \remove "Axis_group_engraver"
326         \consistsend "Hara_kiri_engraver"
327         \consists "Instrument_name_engraver"
328         \accepts "Voice"
329
330         % hara kiri & auto knee don't work together.
331         Beam \override #'auto-knee-gap = #'()
332 }
333
334 %{
335   The HaraKiriStaffContexts doesn't override \name,
336   so it is still named `Staff'.
337
338   %\translator { \HaraKiriStaffContext }
339 %}
340
341
342
343
344 ScoreContext = \translator {
345         \type Score_engraver
346         \name Score
347         localKeySignature = #'()
348         
349         \consists "Repeat_acknowledge_engraver"
350         \consists "Staff_collecting_engraver"
351
352         % move the alias along with the engraver.
353
354         %% TODO? add this alias from Timing_engraver::initialize() ? 
355         \consists "Timing_engraver"
356         \alias "Timing"
357         
358         \consists "Output_property_engraver"
359         \consists "System_start_delimiter_engraver"
360         \consists "Mark_engraver"       
361         \consists "Break_align_engraver"
362         \consists "Spacing_engraver"
363         \consists "Vertical_align_engraver"
364         \consists "Lyric_phrasing_engraver"
365         \consists "Bar_number_engraver"
366         \consists "Span_arpeggio_engraver"
367
368         \accepts "Staff"
369         \accepts "TabStaff"
370         \accepts "StaffContainer"
371         \accepts "StaffGroup"
372         \accepts "RhythmicStaff"        
373         \accepts "Lyrics"
374         \accepts "ChordNames"
375         \accepts "GrandStaff"
376         \accepts "ChoirStaff"
377         \accepts "PianoStaff"
378         \accepts "NoteNames"
379         \accepts "FiguredBass"  
380
381         soloText = #"Solo"
382         soloIIText = #"Solo II"
383         aDueText = #"a2"
384         soloADue = ##t
385         splitInterval = #'(0 . 1)
386         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
387         systemStartDelimiter =#'SystemStartBar
388
389
390         %  name, glyph id, clef position 
391         % where is c0 in this clef?
392
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 *, but they are unlikely to be used, 
415         %% as the default pedal-style for SostenutoPedal is 'mixed': i.e.  Sost. Ped_____________________ 
416         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
417
418         tupletNumberFormatFunction = #denominator-tuplet-formatter
419         
420         subdivideBeams = ##f
421         extraNatural = ##t
422         autoAccidentals = #'(Staff (same-octave . 0))
423         autoCautionaries = #'()  
424
425
426        keyAccidentalOrder = #'(
427          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
428          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
429          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
430          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
431         )
432         breakAlignOrder = #'(
433           instrument-name
434           left-edge
435           ambitus
436           span-bar
437           breathing-sign
438           clef
439           key-signature
440           staff-bar
441           time-signature
442           custos
443         )
444         barCheckSynchronize = ##t
445
446         \grobdescriptions #all-grob-descriptions
447 }
448
449 OrchestralScoreContext= \translator {
450         \ScoreContext
451 }
452 EasyNotation =  \translator {
453         \ScoreContext
454         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
455 }
456
457 % retain for compatibility reasons (FIXME: convert-ly)
458 GraceContext = \translator {
459         \type "Engraver_group_engraver"
460 }
461
462 FiguredBassContext = \translator {
463         \type "Engraver_group_engraver"
464         \name FiguredBass 
465         \consists "Figured_bass_engraver"       
466         \consistsend "Axis_group_engraver"
467 }
468
469
470 TabVoiceContext =   \translator {
471       \VoiceContext
472       \name "TabVoice"
473       \denies "Thread"
474       \consists "Tab_note_heads_engraver"
475
476       Slur \override #'font-family       = #'roman
477       Slur \override #'molecule-callback = #hammer-molecule-callback
478       Slur \override #'direction    = #-1
479
480       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
481       % This feature is now disabled because most of the tab does not use it.
482       %Beam \override #'damping = #100000
483       %Stem \override #'up-to-staff = ##t
484
485       % No accidental in tablature !
486       \remove Accidental_engraver
487 }
488
489 TabStaffContext = \translator {
490       \StaffContext
491       \alias "Staff"
492       \name "TabStaff"
493       \denies "Voice"
494       \accepts "TabVoice"
495       
496       % 6 strings
497       StaffSymbol \override #'line-count  = #6
498       StaffSymbol \override #'staff-space = #1.5
499
500       stringOneTopmost = ##t
501       highStringOne = ##t
502
503       % One may change the strings tuning as following :
504       % The lenght of the list must be equal to the number of string
505       %TabNoteHead \override #'string-tunings = #'(10 10 10 10 10 10)
506       
507       % Special "TAB" clef
508       clefGlyph = #"clefs-tab"
509       clefPosition = #0
510       
511       % Don't draw stems over the tablature figures !
512       Stem \override #'avoid-note-head = ##t
513       
514       % No accidental in tablature !
515       \remove Accidental_engraver
516       \remove Key_engraver
517       stringTunings   = #guitar-tunings
518       tablatureFormat = #fret-number-tablature-format
519 }
520