]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* input/test/time-signature-double.ly: new file
[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 "Rest_swallow_translator" 
304         \consists "Output_property_engraver"    
305         \consists "Separating_line_group_engraver"
306         \consists "New_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        keyAccidentalOrder = #'(
429          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
430          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
431          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
432          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
433         )
434         breakAlignOrder = #'(
435           instrument-name
436           left-edge
437           ambitus
438           span-bar
439           breathing-sign
440           clef
441           key-signature
442           staff-bar
443           time-signature
444           custos
445         )
446         barCheckSynchronize = ##t
447
448         %% chord names:
449         chordNameFunction = #ignatzek-chord-names
450         majorSevenSymbol = #whiteTriangleMarkup
451         chordNameSeparator = #(make-simple-markup  "/")
452         chordNameExceptions = #ignatzekExceptions
453
454         %% tablature:
455         stringOneTopmost = ##t
456         highStringOne = ##t
457
458         %% One may change the strings tuning as following :
459         %% The lenght of the list must be equal to the number of string
460       
461         stringTunings   = #guitar-tunings
462         tablatureFormat = #fret-number-tablature-format
463
464         \grobdescriptions #all-grob-descriptions
465 }
466
467 OrchestralScoreContext= \translator {
468         \ScoreContext
469 }
470 EasyNotation =  \translator {
471         \ScoreContext
472         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
473 }
474
475 % retain for compatibility reasons (FIXME: convert-ly)
476 GraceContext = \translator {
477         \type "Engraver_group_engraver"
478 }
479
480 FiguredBassContext = \translator {
481         \type "Engraver_group_engraver"
482         \name FiguredBass 
483         \consists "Figured_bass_engraver"
484         \consists "Rest_swallow_translator"
485         \consists "Note_swallow_translator"
486         \consistsend "Axis_group_engraver"
487 }
488
489
490 TabVoiceContext =   \translator {
491       \VoiceContext
492       \name "TabVoice"
493       \denies "Thread"
494       \consists "Tab_note_heads_engraver"
495
496       Slur \override #'font-family       = #'roman
497       Slur \override #'molecule-callback = #hammer-molecule-callback
498       Slur \override #'direction    = #-1
499
500       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
501       % This feature is now disabled because most of the tab does not use it.
502       %Beam \override #'damping = #100000
503       %Stem \override #'up-to-staff = ##t
504
505       % No accidental in tablature !
506       \remove Accidental_engraver
507 }
508
509 TabStaffContext = \translator {
510       \StaffContext
511       \alias "Staff"
512       \name "TabStaff"
513       \denies "Voice"
514       \accepts "TabVoice"
515       
516       % 6 strings
517       StaffSymbol \override #'line-count  = #6
518       StaffSymbol \override #'staff-space = #1.5
519
520      % Don't draw stems over the tablature figures !
521       Stem \override #'avoid-note-head = ##t
522       
523       % No accidental in tablature !
524       \remove Accidental_engraver
525       \remove Key_engraver
526
527       % Special "TAB" clef
528       clefGlyph = #"clefs-tab"
529       clefPosition = #0
530       
531
532 }
533