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