]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
patch::: 1.3.129.jcn2
[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 "Phrasing_slur_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         \consists "Thread_devnull_engraver";
186         \consists "Note_heads_engraver";
187         \consists "Note_head_line_engraver";
188         \consists "Output_property_engraver";   
189         Generic_property_list = #generic-thread-properties
190         \consists "Property_engraver";
191 }
192
193 GrandStaffContext=\translator{
194         \type "Engraver_group_engraver";
195         \name GrandStaff;
196         \consists "Span_bar_engraver";
197         \consists "Span_arpeggio_engraver";
198         \consists "System_start_delimiter_engraver";
199         SystemStartDelimiter \override #'glyph = #'brace
200         
201         \consists "Property_engraver";  
202         Generic_property_list = #generic-grand-staff-properties
203         \accepts "Staff";
204 }
205
206 PianoStaffContext = \translator{
207         \GrandStaffContext
208         \name "PianoStaff";
209
210         \consists "Vertical_align_engraver";
211
212         alignmentReference = \center;
213         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
214         VerticalAlignment \override #'forced-distance = #12
215
216 %       \consistsend "Axis_group_engraver";
217 }
218
219 StaffGroupContext= \translator {
220         \type "Engraver_group_engraver";
221         \name StaffGroup;
222
223         \consists "Span_bar_engraver";
224         \consists "Span_arpeggio_engraver";
225         \consists "Output_property_engraver";   
226         SystemStartDelimiter \override #'glyph = #'bracket
227
228         \consists "System_start_delimiter_engraver";
229         \accepts "Staff";
230         \accepts "RhythmicStaff";
231         \accepts "GrandStaff";
232         \accepts "PianoStaff";
233         
234         \accepts "Lyrics";
235         \accepts "ChordNames";
236 }
237
238
239 % UGH! JUNKME
240 LyricsVoiceContext= \translator{
241         \type "Engraver_group_engraver";
242         \consistsend "Axis_group_engraver";
243         LyricsVoiceMinimumVerticalExtent = #(cons -1.2 1.2)
244
245         \name LyricsVoice ;
246         \consists "Separating_line_group_engraver";
247         \consists "Lyric_engraver";
248         \consists "Extender_engraver";
249         \consists "Hyphen_engraver";
250         \consists "Stanza_number_engraver";
251         phrasingPunctuation = #".,;:!?\""
252         
253 }
254 NoteNamesContext = \translator {
255         \type "Engraver_group_engraver";
256         \name NoteNames;
257         \consistsend "Axis_group_engraver";
258         \consists "Note_name_engraver";
259         \consists "Separating_line_group_engraver";
260 }
261
262 LyricsContext = \translator {
263         \type "Engraver_group_engraver";
264         \name Lyrics;
265         \consists Vertical_align_engraver; %need this for getting folded repeats right.
266         Generic_property_list = #generic-lyrics-properties
267         \consists "Property_engraver";
268         \consistsend "Axis_group_engraver";
269         
270         \accepts "LyricsVoice";
271 }
272
273 ChordNamesVoiceContext = \translator {
274         \type "Engraver_group_engraver";
275         \name ChordNamesVoice ;
276
277         \consists "Output_property_engraver";   
278         \consistsend "Axis_group_engraver";
279         \consists "Separating_line_group_engraver";
280         \consists "Chord_name_engraver";
281 }
282 ChordNamesContext = \translator {
283         \type "Engraver_group_engraver";
284         \name ChordNames;
285
286         Generic_property_list = #generic-chord-staff-properties
287
288         \consists "Property_engraver";  
289         \consists "Output_property_engraver";   
290         \accepts "ChordNamesVoice";
291
292         VerticalAxisGroup \override #'invisible-staff = ##t
293         \consistsend "Axis_group_engraver";
294         }
295
296
297
298 StupidScore = \translator {
299         \type "Score_engraver";
300         \name Score;
301         \consists "Note_heads_engraver";
302 }
303
304
305
306
307 HaraKiriStaffContext = \translator {
308         \StaffContext
309         \remove "Axis_group_engraver";
310         \consistsend "Hara_kiri_engraver";        
311         \consists "Instrument_name_engraver";
312         \accepts "Voice";
313 }
314 %{
315   The HaraKiriStaffContexts doesn't override \name,
316   so it is still named `Staff'.
317
318   %\translator { \HaraKiriStaffContext }
319 %}
320
321
322
323
324 ScoreContext = \translator {
325         \type Score_engraver;
326         \name Score;
327         
328
329         \consists "Repeat_acknowledge_engraver";
330         \consists "Timing_engraver";
331         \consists "Output_property_engraver";   
332         \consists "System_start_delimiter_engraver";
333         \consists "Mark_engraver";      
334         \consists "Break_align_engraver";
335         \consists "Spacing_engraver";
336         \consists "Vertical_align_engraver";
337
338         \consists "Lyric_phrasing_engraver";
339         \consists "Bar_number_engraver";
340         \consists "Span_arpeggio_engraver";
341
342         
343         \accepts "Staff";
344         \accepts "StaffGroup";
345         \accepts "RhythmicStaff";       
346         \accepts "Lyrics";
347         \accepts "ChordNames";
348         \accepts "GrandStaff";
349         \accepts "ChoirStaff";
350         \accepts "PianoStaff";
351         \accepts "NoteNames";
352
353         soloText = #"Solo"
354         soloIIText = #"Solo II"
355         aDueText = #"\\`a2"
356         soloADue = ##t
357         splitInterval = #'(0 . 1)
358         changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
359
360         %devNullThread = #'unisolo
361         %devNullVoice = #'unisolo
362
363         StaffMinimumVerticalExtent = #(cons -4.0 4.0)
364
365         barAuto = ##t
366         voltaVisibility = ##t
367         %  name, glyph id, clef position 
368         % where is c0 in this clef?
369         clefPitches = #'(("clefs-G" . -4)
370           ("clefs-C" . 0)
371           ("clefs-F" . 4)
372           ("clefs-vaticana_do" . 0)
373           ("clefs-vaticana_fa" . 4)
374           ("clefs-medicaea_do" . 0)
375           ("clefs-medicaea_fa" . 4)
376           ("clefs-hufnagel_do" . 0)
377           ("clefs-hufnagel_fa" . 4)
378           ("clefs-hufnagel_do_fa" . 0)
379           ("clefs-mensural1_c" . 0)
380           ("clefs-mensural2_c" . 0)
381           ("clefs-mensural3_c" . 0)
382           ("clefs-mensural1_f" . 4)
383           ("clefs-mensural2_f" . 4)
384           ("clefs-mensural_g" . -4))
385
386         clefGlyph = #"clefs-G"
387         clefPosition = #-2
388
389         automaticPhrasing = ##t;
390         alignmentReference = \down;
391         defaultBarType = #"|"
392
393         explicitClefVisibility = #all-visible
394         explicitKeySignatureVisibility = #all-visible
395         
396         scriptDefinitions = #default-script-alist
397
398         verticalAlignmentChildCallback = #Align_interface::alignment_callback
399
400         pedalSustainStrings = #'("Ped." "*Ped." "*")
401         pedalUnaChordaStrings = #'("una chorda" "" "tre chorde")
402         pedalSostenutoStrings = #'()  % FIXME
403
404        keyAccidentalOrder = #'(
405          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
406          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
407        )
408         breakAlignOrder = #'(
409           Instrument_name
410           Left_edge_item
411           Span_bar
412           Breathing_sign
413           Clef_item
414           Key_item
415           Staff_bar
416           Time_signature
417           Custos
418           Stanza_number
419         )
420
421
422         \elementdescriptions #all-grob-descriptions
423 }
424
425 OrchestralScoreContext= \translator {
426         \ScoreContext
427 }
428