]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
0a2fc103ab7cce92f58081709ee09a65c904852b
[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
243 StaffGroupContext = \translator {
244         \InnerStaffGroupContext
245         \name StaffGroup
246         \accepts "InnerChoirStaff"
247         \accepts "ChoirStaff"
248         \accepts "InnerStaffGroup"
249         \accepts "FiguredBass"
250 }
251
252
253 % UGH! JUNKME
254 LyricsVoiceContext= \translator{
255         \type "Engraver_group_engraver"
256         \consistsend "Hara_kiri_engraver"
257         minimumVerticalExtent = #'(-1.2 . 1.2)
258         extraVerticalExtent = ##f
259         verticalExtent = ##f 
260         \name LyricsVoice 
261         \consists "Separating_line_group_engraver"
262         \consists "Lyric_engraver"
263         \consists "Extender_engraver"
264         \consists "Hyphen_engraver"
265         \consists "Stanza_number_engraver"
266         \consists "Skip_req_swallow_translator"
267         phrasingPunctuation = #".,:!?\""
268         
269 }
270 NoteNamesContext = \translator {
271         \type "Engraver_group_engraver"
272         \name NoteNames
273         \consistsend "Axis_group_engraver"
274
275         minimumVerticalExtent = ##f
276         extraVerticalExtent = ##f
277         verticalExtent = ##f 
278
279         
280         \consists "Note_name_engraver"
281         \consists "Separating_line_group_engraver"
282 }
283
284 LyricsContext = \translator {
285         \type "Engraver_group_engraver"
286         \name Lyrics
287         
288         %% To get folded repeats right.
289         \consists Vertical_align_engraver 
290
291         \consistsend "Hara_kiri_engraver"
292         minimumVerticalExtent = ##f
293         extraVerticalExtent = ##f
294         verticalExtent = ##f 
295         
296         \accepts "LyricsVoice"
297 }
298
299
300 ChordNamesContext = \translator {
301         \type "Engraver_group_engraver"
302         \name ChordNames
303
304         \consists "Rest_swallow_translator" 
305         \consists "Output_property_engraver"    
306         \consists "Separating_line_group_engraver"
307         \consists "Chord_name_engraver"
308         \consists "Skip_req_swallow_translator"
309         \consistsend "Hara_kiri_engraver"
310         minimumVerticalExtent = #'(0 . 2.5)
311         extraVerticalExtent = ##f
312         verticalExtent = ##f 
313 }
314
315
316 HaraKiriStaffContext = \translator {
317         \StaffContext
318         \remove "Axis_group_engraver"
319         \consistsend "Hara_kiri_engraver"
320         \consists "Instrument_name_engraver"
321         \accepts "Voice"
322
323         % hara kiri & auto knee don't work together.
324         Beam \override #'auto-knee-gap = #'()
325 }
326
327 %{
328   The HaraKiriStaffContexts doesn't override \name,
329   so it is still named `Staff'.
330
331   %\translator { \HaraKiriStaffContext }
332 %}
333
334
335
336
337 ScoreContext = \translator {
338         \type Score_engraver
339         \name Score
340         localKeySignature = #'()
341         
342         \consists "Repeat_acknowledge_engraver"
343         \consists "Staff_collecting_engraver"
344
345         % move the alias along with the engraver.
346
347         %% TODO? add this alias from Timing_engraver::initialize() ? 
348         \consists "Timing_engraver"
349         \alias "Timing"
350         
351         \consists "Output_property_engraver"
352         \consists "System_start_delimiter_engraver"
353         \consists "Mark_engraver"       
354         \consists "Break_align_engraver"
355         \consists "Spacing_engraver"
356         \consists "Vertical_align_engraver"
357         \consists "Lyric_phrasing_engraver"
358         \consists "Bar_number_engraver"
359         \consists "Span_arpeggio_engraver"
360
361         \accepts "Staff"
362         \accepts "TabStaff"
363         \accepts "StaffContainer"
364         \accepts "StaffGroup"
365         \accepts "RhythmicStaff"        
366         \accepts "Lyrics"
367         \accepts "ChordNames"
368         \accepts "GrandStaff"
369         \accepts "ChoirStaff"
370         \accepts "PianoStaff"
371         \accepts "NoteNames"
372         \accepts "FiguredBass"  
373
374         soloText = #"Solo"
375         soloIIText = #"Solo II"
376         aDueText = #"a2"
377         soloADue = ##t
378         splitInterval = #'(0 . 1)
379         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
380         systemStartDelimiter =#'SystemStartBar
381
382
383         %% name, glyph id, clef position 
384         %% where is c0 in this clef?
385         clefGlyph = #"clefs-G"
386         clefPosition = #-2
387         centralCPosition = #-6
388         
389         automaticPhrasing = ##t
390         automaticMelismata = ##t
391         
392         defaultBarType = #"|"
393         barNumberVisibility = #default-bar-number-visibility
394
395         explicitClefVisibility = #all-visible
396         explicitKeySignatureVisibility = #all-visible
397         autoBeamSettings = #auto-beam-settings
398         autoBeaming = ##t
399         scriptDefinitions = #default-script-alist
400
401         verticalAlignmentChildCallback = #Align_interface::alignment_callback
402
403         pedalSustainStrings = #'("Ped." "*Ped." "*")
404         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
405
406         %% These are in ordinary italic font, including the *,
407         %% but they are unlikely to be used, 
408         %% as the default pedal-style for SostenutoPedal is 'mixed':
409         %% i.e.  Sost. Ped_____________________ 
410         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
411
412         tupletNumberFormatFunction = #denominator-tuplet-formatter
413         
414         subdivideBeams = ##f
415         extraNatural = ##t
416         autoAccidentals = #'(Staff (same-octave . 0))
417         autoCautionaries = #'()  
418
419        keyAccidentalOrder = #'(
420          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
421          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
422          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
423          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
424         )
425         breakAlignOrder = #'(
426           instrument-name
427           left-edge
428           ambitus
429           span-bar
430           breathing-sign
431           clef
432           key-signature
433           staff-bar
434           time-signature
435           custos
436         )
437         barCheckSynchronize = ##t
438
439         %% chord names:
440         chordNameFunction = #ignatzek-chord-names
441         majorSevenSymbol = #whiteTriangleMarkup
442         chordNameSeparator = #(make-simple-markup  "/")
443         chordNameExceptions = #ignatzekExceptions
444         chordRootNamer = #note-name->markup
445         
446         %% tablature:
447         stringOneTopmost = ##t
448         highStringOne = ##t
449
450         %% One may change the strings tuning as following :
451         %% The lenght of the list must be equal to the number of string
452       
453         stringTunings   = #guitar-tunings
454         tablatureFormat = #fret-number-tablature-format
455
456         %%
457         bassFigureFormatFunction = #make-bass-figure-markup
458
459
460         \grobdescriptions #all-grob-descriptions
461 }
462
463 OrchestralScoreContext= \translator {
464         \ScoreContext
465 }
466 EasyNotation =  \translator {
467         \ScoreContext
468         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
469 }
470
471 % retain for compatibility reasons (FIXME: convert-ly)
472 GraceContext = \translator {
473         \type "Engraver_group_engraver"
474 }
475
476 FiguredBassContext = \translator {
477         \type "Engraver_group_engraver"
478         \name FiguredBass 
479         \consists "Figured_bass_engraver"
480         \consists "Rest_swallow_translator"
481         \consists "Note_swallow_translator"
482         \consistsend "Hara_kiri_engraver"
483 }
484
485 TabVoiceContext =   \translator {
486       \VoiceContext
487       \name "TabVoice"
488       \denies "Thread"
489       \consists "Tab_note_heads_engraver"
490
491       Slur \override #'font-family       = #'roman
492       Slur \override #'molecule-callback = #hammer-molecule-callback
493       Slur \override #'direction    = #-1
494
495       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
496       % This feature is now disabled because most of the tab does not use it.
497       %Beam \override #'damping = #100000
498       %Stem \override #'up-to-staff = ##t
499
500       % No accidental in tablature !
501       \remove Accidental_engraver
502 }
503
504 TabStaffContext = \translator {
505       \StaffContext
506       \alias "Staff"
507       \name "TabStaff"
508       \denies "Voice"
509       \accepts "TabVoice"
510       
511       % 6 strings
512       StaffSymbol \override #'line-count  = #6
513       StaffSymbol \override #'staff-space = #1.5
514
515      % Don't draw stems over the tablature figures !
516       Stem \override #'avoid-note-head = ##t
517       
518       % No accidental in tablature !
519       \remove Accidental_engraver
520       \remove Key_engraver
521
522       % Special "TAB" clef
523       clefGlyph = #"clefs-tab"
524       clefPosition = #0
525 }
526