]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
patch::: 1.3.128.jcn1
[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         devNullVoice = #'unisolo
120         \consists "Voice_devnull_engraver";
121
122         \consists "Script_engraver";
123         \consists "Script_column_engraver";
124         \consists "Rhythmic_column_engraver";
125         \consists "Slur_engraver";
126         \consists "Tie_engraver";
127         \consists "Tuplet_engraver";
128         \consists "Grace_position_engraver";
129         \consists "Skip_req_swallow_translator";
130         \accepts Thread; % bug if you leave out this!
131         \accepts Grace;
132 }
133
134 GraceContext=\translator {
135         \type "Grace_engraver_group";
136         \name "Grace";
137         \consists "Output_property_engraver";   
138
139         Generic_property_list = #generic-grace-properties
140         
141         \consists "Note_heads_engraver";
142         \consists "Local_key_engraver";
143         \consists "Stem_engraver";
144         \consists "Beam_engraver";
145         \consists "Slur_engraver";
146
147         \consists "Auto_beam_engraver";
148         \consists "Align_note_column_engraver";
149
150         \consists "Rhythmic_column_engraver";
151
152         \consists "Dynamic_engraver";% in Grace ???
153         \consists "Text_engraver"; % in Grace ???
154
155         \consists "Property_engraver";
156
157         Stem \override  #'flag-style = #"grace"
158         Stem \override  #'stem-length = #6.0
159         Stem \override  #'direction = #1
160
161         NoteHead \override #'font-relative-size = #-1
162         Stem \override #'font-relative-size = #-1
163         Stem \override #'stem-shorten = #'(0)
164         Beam \override #'font-relative-size = #-1
165         TextScript \override #'font-relative-size = #-1
166         Slur \override #'font-relative-size = #-1
167         Accidentals \override #'font-relative-size = #-1
168         Beam \override #'thickness = #0.3
169         Beam \override #'space-function = #(lambda (x) 0.5)
170
171         Stem \override #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
172         Stem \override #'beamed-lengths =
173                 #'(0.0 2.5 2.0 1.5)
174         Stem \override #'beamed-minimum-lengths
175                  = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
176
177         weAreGraceContext = ##t   
178         graceAccidentalSpace= 1.5 ; % in staff space
179 }
180
181 ThreadContext = \translator{
182         \type Engraver_group_engraver;
183         \name Thread;
184         
185         devNullThread = #'unisolo
186         \consists "Thread_devnull_engraver";
187         \consists "Note_heads_engraver";
188         \consists "Note_head_line_engraver";
189         \consists "Output_property_engraver";   
190         Generic_property_list = #generic-thread-properties
191         \consists "Property_engraver";
192 }
193
194 GrandStaffContext=\translator{
195         \type "Engraver_group_engraver";
196         \name GrandStaff;
197         \consists "Span_bar_engraver";
198         \consists "Span_arpeggio_engraver";
199         \consists "System_start_delimiter_engraver";
200         SystemStartDelimiter \override #'glyph = #'brace
201         
202         \consists "Property_engraver";  
203         Generic_property_list = #generic-grand-staff-properties
204         \accepts "Staff";
205 }
206
207 PianoStaffContext = \translator{
208         \GrandStaffContext
209         \name "PianoStaff";
210
211         \consists "Vertical_align_engraver";
212
213         alignmentReference = \center;
214         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
215         VerticalAlignment \override #'forced-distance = #12
216
217 %       \consistsend "Axis_group_engraver";
218 }
219
220 StaffGroupContext= \translator {
221         \type "Engraver_group_engraver";
222         \name StaffGroup;
223
224         \consists "Span_bar_engraver";
225         \consists "Span_arpeggio_engraver";
226         \consists "Output_property_engraver";   
227         SystemStartDelimiter \override #'glyph = #'bracket
228
229         \consists "System_start_delimiter_engraver";
230         \accepts "Staff";
231         \accepts "RhythmicStaff";
232         \accepts "GrandStaff";
233         \accepts "PianoStaff";
234         
235         \accepts "Lyrics";
236         \accepts "ChordNames";
237 }
238
239
240 % UGH! JUNKME
241 LyricsVoiceContext= \translator{
242         \type "Engraver_group_engraver";
243         \consistsend "Axis_group_engraver";
244         LyricsVoiceMinimumVerticalExtent = #(cons -1.2 1.2)
245
246         \name LyricsVoice ;
247         \consists "Separating_line_group_engraver";
248         \consists "Lyric_engraver";
249         \consists "Extender_engraver";
250         \consists "Hyphen_engraver";
251         \consists "Stanza_number_engraver";
252         phrasingPunctuation = #".,;:!?\""
253         
254 }
255 NoteNamesContext = \translator {
256         \type "Engraver_group_engraver";
257         \name NoteNames;
258         \consistsend "Axis_group_engraver";
259         \consists "Note_name_engraver";
260         \consists "Separating_line_group_engraver";
261 }
262
263 LyricsContext = \translator {
264         \type "Engraver_group_engraver";
265         \name Lyrics;
266         \consists Vertical_align_engraver; %need this for getting folded repeats right.
267         Generic_property_list = #generic-lyrics-properties
268         \consists "Property_engraver";
269         \consistsend "Axis_group_engraver";
270         
271         \accepts "LyricsVoice";
272 }
273
274 ChordNamesVoiceContext = \translator {
275         \type "Engraver_group_engraver";
276         \name ChordNamesVoice ;
277
278         \consists "Output_property_engraver";   
279         \consistsend "Axis_group_engraver";
280         \consists "Separating_line_group_engraver";
281         \consists "Chord_name_engraver";
282 }
283 ChordNamesContext = \translator {
284         \type "Engraver_group_engraver";
285         \name ChordNames;
286
287         Generic_property_list = #generic-chord-staff-properties
288
289         \consists "Property_engraver";  
290         \consists "Output_property_engraver";   
291         \accepts "ChordNamesVoice";
292
293         VerticalAxisGroup \override #'invisible-staff = ##t
294         \consistsend "Axis_group_engraver";
295         }
296
297
298
299 StupidScore = \translator {
300         \type "Score_engraver";
301         \name Score;
302         \consists "Note_heads_engraver";
303 }
304
305
306
307
308 HaraKiriStaffContext = \translator {
309         \StaffContext
310         \remove "Axis_group_engraver";
311         \consistsend "Hara_kiri_engraver";        
312         \consists "Instrument_name_engraver";
313         \accepts "Voice";
314 }
315 %{
316   The HaraKiriStaffContexts doesn't override \name,
317   so it is still named `Staff'.
318
319   %\translator { \HaraKiriStaffContext }
320 %}
321
322
323
324
325 ScoreContext = \translator {
326         \type Score_engraver;
327         \name Score;
328         
329
330         \consists "Repeat_acknowledge_engraver";
331         \consists "Timing_engraver";
332         \consists "Output_property_engraver";   
333         \consists "System_start_delimiter_engraver";
334         \consists "Mark_engraver";      
335         \consists "Break_align_engraver";
336         \consists "Spacing_engraver";
337         \consists "Vertical_align_engraver";
338
339         \consists "Lyric_phrasing_engraver";
340         \consists "Bar_number_engraver";
341         \consists "Span_arpeggio_engraver";
342
343         
344         \accepts "Staff";
345         \accepts "StaffGroup";
346         \accepts "RhythmicStaff";       
347         \accepts "Lyrics";
348         \accepts "ChordNames";
349         \accepts "GrandStaff";
350         \accepts "ChoirStaff";
351         \accepts "PianoStaff";
352         \accepts "NoteNames";
353
354         soloText = #"Solo"
355         soloIIText = #"Solo II"
356         aDueText = #"\\`a2"
357         soloADue = ##t
358         splitInterval = #'(0 . 1)
359         changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
360
361         %devNullThread = #'unisolo
362         %devNullVoice = #'unisolo
363
364         StaffMinimumVerticalExtent = #(cons -4.0 4.0)
365
366         barAuto = ##t
367         voltaVisibility = ##t
368         %  name, glyph id, clef position 
369         % where is c0 in this clef?
370         clefPitches = #'(("clefs-G" . -4)
371           ("clefs-C" . 0)
372           ("clefs-F" . 4)
373           ("clefs-vaticana_do" . 0)
374           ("clefs-vaticana_fa" . 4)
375           ("clefs-medicaea_do" . 0)
376           ("clefs-medicaea_fa" . 4)
377           ("clefs-hufnagel_do" . 0)
378           ("clefs-hufnagel_fa" . 4)
379           ("clefs-hufnagel_do_fa" . 0)
380           ("clefs-mensural1_c" . 0)
381           ("clefs-mensural2_c" . 0)
382           ("clefs-mensural3_c" . 0)
383           ("clefs-mensural1_f" . 4)
384           ("clefs-mensural2_f" . 4)
385           ("clefs-mensural_g" . -4))
386
387         clefGlyph = #"clefs-G"
388         clefPosition = #-2
389
390         automaticPhrasing = ##t;
391         alignmentReference = \down;
392         defaultBarType = #"|"
393
394         explicitClefVisibility = #all-visible
395         explicitKeySignatureVisibility = #all-visible
396         
397         scriptDefinitions = #default-script-alist
398
399         verticalAlignmentChildCallback = #Align_interface::alignment_callback
400
401         pedalSustainStrings = #'("Ped." "*Ped." "*")
402         pedalUnaChordaStrings = #'("una chorda" "" "tre chorde")
403         pedalSostenutoStrings = #'()  % FIXME
404
405        keyAccidentalOrder = #'(
406          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
407          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
408        )
409         breakAlignOrder = #'(
410           Instrument_name
411           Left_edge_item
412           Span_bar
413           Breathing_sign
414           Clef_item
415           Key_item
416           Staff_bar
417           Time_signature
418           Custos
419           Stanza_number
420         )
421
422
423         \elementdescriptions #all-grob-descriptions
424 }
425
426 OrchestralScoreContext= \translator {
427         \ScoreContext
428 }
429