]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
e3db961ceed47348c7821cfd8df3c81b6302982f
[lilypond.git] / ly / engraver.ly
1
2 \version "1.3.110"
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         Generic_property_list = #generic-staff-properties
12         \consists "Property_engraver";
13         
14         \consists "Multi_measure_rest_engraver";
15
16         \consists "Bar_engraver";
17  % Bar_engraver must be first so default bars aren't overwritten
18 % with empty ones.
19
20
21 %       \consists "Repeat_engraver";
22         \consists "Volta_engraver";
23         \consists "Separating_line_group_engraver";     
24
25
26
27         \consists "Clef_engraver";
28         \consists "Key_engraver";
29         \consists "Time_signature_engraver";
30         \consists "Staff_symbol_engraver";
31         \consists "Collision_engraver";
32         \consists "Rest_collision_engraver";
33         \consists "Local_key_engraver";
34         \consists "Piano_pedal_engraver";
35
36         \consistsend "Axis_group_engraver";
37
38 %{
39         The Instrument_name_engraver puts the name of the instrument
40         (\property Staff.instrument; Staff.instr for subsequent lines)
41         to the left of a staff.
42
43         This is commented out, so you don't get funny things on the
44         PianoStaff      
45         \consists "Instrument_name_engraver";
46 %}
47
48
49           
50         \accepts "Voice";
51 }
52
53 ChoirStaffContext = \translator {
54         \type "Engraver_group_engraver";
55         \name ChoirStaff;
56         alignmentReference = \center;
57         \consists "System_start_delimiter_engraver";
58         SystemStartDelimiter \override #'glyph = #'bracket
59
60         \accepts "Staff";
61         \accepts "RhythmicStaff";
62         \accepts "GrandStaff";
63         \accepts "PianoStaff";
64         \accepts "Lyrics";
65         \accepts "ChordNames";
66 }
67
68
69 RhythmicStaffContext=\translator{
70         \type "Engraver_group_engraver";
71         
72         \consists "Property_engraver";
73         \consists "Output_property_engraver";   
74
75         Generic_property_list = #generic-staff-properties
76
77         \consists "Pitch_squash_engraver";
78         \consists "Separating_line_group_engraver";     
79         \name RhythmicStaff;
80         Bar \override #'bar-size = #4
81         VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
82         VoltaBracket \override #'padding =  #5  % urg, in \pt
83         StaffSymbol \override #'line-count = #1 
84
85 %       \consists "Repeat_engraver";
86         \consists "Volta_engraver";
87         \consists "Bar_engraver";
88         \consists "Time_signature_engraver";
89         \consists "Staff_symbol_engraver";
90         \consistsend "Axis_group_engraver";
91         \accepts "Voice";
92 }
93
94
95 VoiceContext = \translator {
96         \type "Engraver_group_engraver";
97         \name Voice;
98
99         Generic_property_list = #generic-voice-properties
100         
101         \consists "Output_property_engraver";   
102         \consists "Arpeggio_engraver";
103
104         \consists "Dynamic_engraver";   % must come before text_engraver.
105         \consists "Text_spanner_engraver";
106         \consists "Property_engraver";
107         
108         \consists "Breathing_sign_engraver";
109         \consists "Rest_engraver";
110         \consists "Dot_column_engraver";
111         \consists "Stem_engraver";
112         \consists "Beam_engraver";
113         \consists "Auto_beam_engraver";
114
115         \consists "Chord_tremolo_engraver";
116         \consists "Melisma_engraver";
117         \consists "Text_engraver";
118         \consists "A2_engraver";
119         \consists "Voice_devnull_engraver";
120
121         \consists "Script_engraver";
122         \consists "Script_column_engraver";
123         \consists "Rhythmic_column_engraver";
124         \consists "Slur_engraver";
125         \consists "Tie_engraver";
126         \consists "Tuplet_engraver";
127         \consists "Grace_position_engraver";
128         \consists "Skip_req_swallow_translator";
129         \accepts Thread; % bug if you leave out this!
130         \accepts Grace;
131 }
132
133 GraceContext=\translator {
134         \type "Grace_engraver_group";
135         \name "Grace";
136         \consists "Output_property_engraver";   
137
138         Generic_property_list = #generic-grace-properties
139         
140         \consists "Note_heads_engraver";
141         \consists "Local_key_engraver";
142         \consists "Stem_engraver";
143         \consists "Beam_engraver";
144         \consists "Slur_engraver";
145
146         \consists "Auto_beam_engraver";
147         \consists "Align_note_column_engraver";
148
149         \consists "Rhythmic_column_engraver";
150
151         \consists "Dynamic_engraver";% in Grace ???
152         \consists "Text_engraver"; % in Grace ???
153
154         \consists "Property_engraver";
155
156         Stem \override  #'flag-style = #"grace"
157         Stem \override  #'stem-length = #6.0
158         Stem \override  #'direction = #1
159
160         NoteHead \override #'font-relative-size = #-1
161         Stem \override #'font-relative-size = #-1
162         Stem \override #'stem-shorten = #'(0)
163         Beam \override #'font-relative-size = #-1
164         TextScript \override #'font-relative-size = #-1
165         Slur \override #'font-relative-size = #-1
166         Accidentals \override #'font-relative-size = #-1
167         Beam \override #'thickness = #0.3
168         Beam \override #'space-function = #(lambda (x) 0.5)
169
170         Stem \override #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
171         Stem \override #'beamed-lengths =
172                 #'(0.0 2.5 2.0 1.5)
173         Stem \override #'beamed-minimum-lengths
174                  = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
175
176         weAreGraceContext = ##t   
177         graceAccidentalSpace= 1.5 ; % in staff space
178 }
179
180 ThreadContext = \translator{
181         \type Engraver_group_engraver;
182         \consists "Thread_devnull_engraver";
183         \consists "Note_heads_engraver";
184         \consists "Note_head_line_engraver";
185         \consists "Output_property_engraver";   
186         Generic_property_list = #generic-thread-properties
187         \consists "Property_engraver";
188         \name Thread;
189 }
190
191 GrandStaffContext=\translator{
192         \type "Engraver_group_engraver";
193         \name GrandStaff;
194         \consists "Span_bar_engraver";
195         \consists "Span_arpeggio_engraver";
196         \consists "System_start_delimiter_engraver";
197         SystemStartDelimiter \override #'glyph = #'brace
198         
199         \consists "Property_engraver";  
200         Generic_property_list = #generic-grand-staff-properties
201         \accepts "Staff";
202 }
203
204 PianoStaffContext = \translator{
205         \GrandStaffContext
206         \name "PianoStaff";
207
208         \consists "Vertical_align_engraver";
209
210         alignmentReference = \center;
211         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
212         VerticalAlignment \override #'forced-distance = #12
213
214 %       \consistsend "Axis_group_engraver";
215 }
216
217 StaffGroupContext= \translator {
218         \type "Engraver_group_engraver";
219         \name StaffGroup;
220
221         \consists "Span_bar_engraver";
222         \consists "Span_arpeggio_engraver";
223         \consists "Output_property_engraver";   
224         SystemStartDelimiter \override #'glyph = #'bracket
225
226         \consists "System_start_delimiter_engraver";
227         \accepts "Staff";
228         \accepts "RhythmicStaff";
229         \accepts "GrandStaff";
230         \accepts "PianoStaff";
231         
232         \accepts "Lyrics";
233         \accepts "ChordNames";
234 }
235
236
237 % UGH! JUNKME
238 LyricsVoiceContext= \translator{
239         \type "Engraver_group_engraver";
240         \consistsend "Axis_group_engraver";
241         LyricsVoiceMinimumVerticalExtent = #(cons -1.2 1.2)
242
243         \name LyricsVoice ;
244         \consists "Separating_line_group_engraver";
245         \consists "Lyric_engraver";
246         \consists "Extender_engraver";
247         \consists "Hyphen_engraver";
248         \consists "Stanza_number_engraver";
249         phrasingPunctuation = #".,;:!?\""
250         
251 }
252 NoteNamesContext = \translator {
253         \type "Engraver_group_engraver";
254         \name NoteNames;
255         \consistsend "Axis_group_engraver";
256         \consists "Note_name_engraver";
257         \consists "Separating_line_group_engraver";
258 }
259
260 LyricsContext = \translator {
261         \type "Engraver_group_engraver";
262         \name Lyrics;
263         \consists Vertical_align_engraver; %need this for getting folded repeats right.
264         Generic_property_list = #generic-lyrics-properties
265         \consists "Property_engraver";
266         \consistsend "Axis_group_engraver";
267         
268         \accepts "LyricsVoice";
269 }
270
271 ChordNamesVoiceContext = \translator {
272         \type "Engraver_group_engraver";
273         \name ChordNamesVoice ;
274
275         \consists "Output_property_engraver";   
276         \consistsend "Axis_group_engraver";
277         \consists "Separating_line_group_engraver";
278         \consists "Chord_name_engraver";
279 }
280 ChordNamesContext = \translator {
281         \type "Engraver_group_engraver";
282         \name ChordNames;
283
284         Generic_property_list = #generic-chord-staff-properties
285
286         \consists "Property_engraver";  
287         \consists "Output_property_engraver";   
288         \accepts "ChordNamesVoice";
289
290         VerticalAxisGroup \override #'invisible-staff = ##t
291         \consistsend "Axis_group_engraver";
292         }
293
294
295 ScoreWithNumbers = \translator {
296         \type "Score_engraver";
297
298         % uncomment to bar numbers on a whole system.
299         \consists "Bar_number_engraver";
300 }
301
302 StupidScore = \translator {
303         \type "Score_engraver";
304         \name Score;
305         \consists "Note_heads_engraver";
306 }
307
308
309
310 BarNumberingStaffContext = \translator {
311         \StaffContext
312         \consists "Mark_engraver";
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 %{
323   The HaraKiriStaffContexts doesn't override \name,
324   so it is still named `Staff'.
325
326   %\translator { \HaraKiriStaffContext }
327 %}
328
329 OrchestralPartStaffContext = \translator {
330         \StaffContext
331         \consists "Mark_engraver";
332 }
333
334 ScoreContext = \translator {
335         \type Score_engraver;
336         \name Score;
337         
338
339         \consists "Repeat_acknowledge_engraver";
340         \consists "Timing_engraver";
341         \consists "Output_property_engraver";   
342         \consists "System_start_delimiter_engraver";
343         \consists "Mark_engraver";      
344         \consists "Break_align_engraver";
345         \consists "Spacing_engraver";
346         \consists "Vertical_align_engraver";
347
348         \consists "Lyric_phrasing_engraver";
349         \consists "Bar_number_engraver";
350         \consists "Span_arpeggio_engraver";
351
352         
353         \accepts "Staff";
354         \accepts "StaffGroup";
355         \accepts "RhythmicStaff";       
356         \accepts "Lyrics";
357         \accepts "ChordNames";
358         \accepts "GrandStaff";
359         \accepts "ChoirStaff";
360         \accepts "PianoStaff";
361         \accepts "NoteNames";
362
363         soloText = #"Solo"
364         soloIIText = #"Solo II"
365         aDueText = #"\\`a2"
366         soloADue = ##t
367         splitInterval = #'(0 . 1)
368         changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
369
370         StaffMinimumVerticalExtent = #(cons -4.0 4.0)
371
372         barAuto = ##t
373         voltaVisibility = ##t
374         %  name, glyph id, clef position 
375         % where is c0 in this clef?
376         clefPitches = #'(("clefs-G" . -4)
377           ("clefs-C" . 0)
378           ("clefs-F" . 4)
379           ("clefs-vaticana_do" . 0)
380           ("clefs-vaticana_fa" . 4)
381           ("clefs-medicaea_do" . 0)
382           ("clefs-medicaea_fa" . 4)
383           ("clefs-hufnagel_do" . 0)
384           ("clefs-hufnagel_fa" . 4)
385           ("clefs-hufnagel_do_fa" . 0)
386           ("clefs-mensural1_c" . 0)
387           ("clefs-mensural2_c" . 0)
388           ("clefs-mensural3_c" . 0)
389           ("clefs-mensural1_f" . 4)
390           ("clefs-mensural2_f" . 4)
391           ("clefs-mensural_g" . -4))
392
393         clefGlyph = #"clefs-G"
394         clefPosition = #-2
395
396         automaticPhrasing = ##t;
397         alignmentReference = \down;
398         defaultBarType = #"|"
399
400         explicitClefVisibility = #all-visible
401         explicitKeySignatureVisibility = #all-visible
402         
403         scriptDefinitions = #default-script-alist
404
405         verticalAlignmentChildCallback = #Align_interface::alignment_callback
406
407         pedalSustainStrings = #'("Ped." "*Ped." "*")
408         pedalUnaChordaStrings = #'("una chorda" "" "tre chorde")
409         pedalSostenutoStrings = #'()  % FIXME
410
411        keyAccidentalOrder = #'(
412          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
413          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
414        )
415         breakAlignOrder = #'(
416           Instrument_name
417           Left_edge_item
418           Span_bar
419           Breathing_sign
420           Clef_item
421           Key_item
422           Staff_bar
423           Time_signature
424           Custos
425           Stanza_number
426         )
427
428
429         \elementdescriptions #all-grob-descriptions
430 }
431
432 OrchestralScoreContext= \translator {
433         \ScoreContext
434 }
435