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