]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
7151edd13ea81128c2a199f2728ec07ff241e04f
[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 "Tuplet_engraver"
168         \consists "A2_engraver"
169
170         \consists "Skip_event_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
184         % why here ? 
185         \consists "Note_head_line_engraver"
186         \consists "Output_property_engraver"    
187
188 }
189
190
191
192 GrandStaffContext=\translator{
193         \type "Engraver_group_engraver"
194         \name GrandStaff
195         localKeySignature = #'()
196         \consists "Span_bar_engraver"
197         \consists "Span_arpeggio_engraver"
198         \consists "System_start_delimiter_engraver"
199         systemStartDelimiter = #'SystemStartBrace
200
201         \accepts "Staff"
202 }
203
204 PianoStaffContext = \translator{
205         \GrandStaffContext
206         \name "PianoStaff"
207         \alias "GrandStaff"
208
209         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
210         VerticalAlignment \override #'forced-distance = #12
211         VerticalAlignment \override #'self-alignment-Y = #0
212
213         \consists "Vertical_align_engraver"
214         \consists "Instrument_name_engraver"
215         
216         instrument = #'()
217         instr = #'()
218         
219 %       \consistsend "Axis_group_engraver"
220 }
221
222 InnerStaffGroupContext= \translator {
223         \type "Engraver_group_engraver"
224         \name InnerStaffGroup
225         localKeySignature = #'()
226
227         \consists "Span_bar_engraver"
228         \consists "Span_arpeggio_engraver"
229         \consists "Output_property_engraver"    
230         systemStartDelimiter = #'SystemStartBracket
231
232         \consists "System_start_delimiter_engraver"
233         \accepts "Staff"
234         \accepts "RhythmicStaff"
235         \accepts "GrandStaff"
236         \accepts "PianoStaff"
237         \accepts "TabStaff"     
238         \accepts "Lyrics"
239         \accepts "ChordNames"
240 }
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 "Hara_kiri_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_event_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 "Hara_kiri_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 "Rest_swallow_translator" 
304         \consists "Output_property_engraver"    
305         \consists "Separating_line_group_engraver"
306         \consists "Chord_name_engraver"
307         \consists "Skip_event_swallow_translator"
308         \consistsend "Hara_kiri_engraver"
309         minimumVerticalExtent = #'(0 . 2.5)
310         extraVerticalExtent = ##f
311         verticalExtent = ##f 
312 }
313
314
315 HaraKiriStaffContext = \translator {
316         \StaffContext
317         \remove "Axis_group_engraver"
318         \consistsend "Hara_kiri_engraver"
319         \consists "Instrument_name_engraver"
320         \accepts "Voice"
321
322         % hara kiri & auto knee don't work together.
323         Beam \override #'auto-knee-gap = #'()
324 }
325
326 %{
327   The HaraKiriStaffContexts doesn't override \name,
328   so it is still named `Staff'.
329
330   %\translator { \HaraKiriStaffContext }
331 %}
332
333
334
335
336 ScoreContext = \translator {
337         \type Score_engraver
338         \name Score
339         localKeySignature = #'()
340         
341         \consists "Repeat_acknowledge_engraver"
342         \consists "Staff_collecting_engraver"
343
344         % move the alias along with the engraver.
345
346         %% TODO? add this alias from Timing_engraver::initialize() ? 
347         \consists "Timing_engraver"
348         \alias "Timing"
349         
350         \consists "Output_property_engraver"
351         \consists "System_start_delimiter_engraver"
352         \consists "Mark_engraver"       
353         \consists "Metronome_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         clefGlyph = #"clefs-G"
384         clefPosition = #-2
385         centralCPosition = #-6
386         
387         automaticPhrasing = ##t
388         automaticMelismata = ##t
389         
390         defaultBarType = #"|"
391         barNumberVisibility = #default-bar-number-visibility
392
393         explicitClefVisibility = #all-visible
394         explicitKeySignatureVisibility = #all-visible
395         autoBeamSettings = #default-auto-beam-settings
396         autoBeaming = ##t
397         scriptDefinitions = #default-script-alist
398
399         verticalAlignmentChildCallback = #Align_interface::alignment_callback
400
401         pedalSustainStrings = #'("Ped." "*Ped." "*")
402         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
403
404         %% These are in ordinary italic font, including the *,
405         %% but they are unlikely to be used, 
406         %% as the default pedal-style for SostenutoPedal is 'mixed':
407         %% i.e.  Sost. Ped_____________________ 
408         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
409
410         tupletNumberFormatFunction = #denominator-tuplet-formatter
411         
412         subdivideBeams = ##f
413         extraNatural = ##t
414         autoAccidentals = #'(Staff (same-octave . 0))
415         autoCautionaries = #'()  
416
417        keyAccidentalOrder = #'(
418          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
419          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
420          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
421          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
422         )
423         breakAlignOrder = #'(
424           instrument-name
425           left-edge
426           ambitus
427           span-bar
428           breathing-sign
429           clef
430           key-signature
431           staff-bar
432           time-signature
433           custos
434         )
435         barCheckSynchronize = ##t
436
437         %% chord names:
438         chordNameFunction = #ignatzek-chord-names
439         majorSevenSymbol = #whiteTriangleMarkup
440         chordNameSeparator = #(make-simple-markup  "/")
441         chordNameExceptions = #ignatzekExceptions
442         chordNoteNamer = #'()
443         chordRootNamer = #note-name->markup
444         
445         %% tablature:
446         stringOneTopmost = ##t
447         highStringOne = ##t
448
449         %% One may change the strings tuning as following :
450         %% The lenght of the list must be equal to the number of string
451         stringTunings   = #guitar-tunings
452         tablatureFormat = #fret-number-tablature-format
453
454         %%
455         bassFigureFormatFunction = #make-bass-figure-markup
456         metronomeMarkFormatter = #make-metronome-markup
457
458         \grobdescriptions #all-grob-descriptions
459 }
460
461 OrchestralScoreContext= \translator {
462         \ScoreContext
463 }
464
465 EasyNotation =  \translator {
466         \ScoreContext
467         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
468 }
469
470 % retain for compatibility reasons (FIXME: convert-ly)
471 GraceContext = \translator {
472         \type "Engraver_group_engraver"
473 }
474
475 FiguredBassContext = \translator {
476         \type "Engraver_group_engraver"
477         \name FiguredBass 
478         \consists "Figured_bass_engraver"
479         \consists "Rest_swallow_translator"
480         \consists "Note_swallow_translator"
481         \consists "Separating_line_group_engraver"
482         
483         \consistsend "Hara_kiri_engraver"
484 }
485
486 TabVoiceContext =   \translator {
487       \VoiceContext
488       \name "TabVoice"
489       \denies "Thread"
490       \consists "Tab_note_heads_engraver"
491
492       Slur \override #'font-family       = #'roman
493       Slur \override #'molecule-callback = #hammer-molecule-callback
494       Slur \override #'direction    = #-1
495
496       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
497       % This feature is now disabled because most of the tab does not use it.
498       %Beam \override #'damping = #100000
499       %Stem \override #'up-to-staff = ##t
500
501       % No accidental in tablature !
502       \remove Accidental_engraver
503 }
504
505 TabStaffContext = \translator {
506       \StaffContext
507       \alias "Staff"
508       \name "TabStaff"
509       \denies "Voice"
510       \accepts "TabVoice"
511       
512       % 6 strings
513       StaffSymbol \override #'line-count  = #6
514       StaffSymbol \override #'staff-space = #1.5
515
516      % Don't draw stems over the tablature figures !
517       Stem \override #'avoid-note-head = ##t
518       
519       % No accidental in tablature !
520       \remove Accidental_engraver
521       \remove Key_engraver
522
523       % Special "TAB" clef
524       clefGlyph = #"clefs-tab"
525       clefPosition = #0
526 }
527