]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
patch::: 1.3.43.jcn1
[lilypond.git] / ly / engraver.ly
1 %
2 % setup for Request->Element conversion. Guru-only
3 %
4
5 StaffContext=\translator {
6         \type "Engraver_group_engraver";
7         \name Staff ;
8         \consists "Output_property_engraver";   
9         barAuto = ##t
10         voltaVisibility = ##t
11         Generic_property_list = #generic-staff-properties
12         \consists "Property_engraver";
13         
14         \consists "Multi_measure_rest_engraver";
15         \consists "Bar_engraver";
16  % Bar_engraver must be first so default bars aren't overwritten
17 % with empty ones.
18
19         voltaPadding = #5  % urg, in \pt
20         voltaMinimumSpace = #25  % urg, in \pt
21
22         StaffMinimumVerticalExtent = #(cons -4.0 4.0)
23
24         \consists "Repeat_engraver";
25
26
27         %  name, glyph id, c0 position
28         supportedClefTypes = #'(
29           ("treble" . ("G" -2))
30           ("violin" . ("G" -2))
31           ("G" . ("G" -2))
32           ("G2" . ("G" -2))
33           ("french" . ("G" -4 ))
34           ("soprano" . ("C" -4 ))
35           ("mezzosoprano" . ("C" -2 ))
36           ("alto" . ("C" 0 ))
37           ("tenor" . ("C" 2 ))
38           ("baritone" . ("C" 4 ))
39           ("varbaritone"  . ("F" 0))
40           ("bass" . ("F" 2 ))
41           ("F" . ( "F" 2))
42           ("subbass" . ("F" 4))
43         )
44         clefPitches = #'(("G" . -4)
45           ("C" . 0)
46           ("F" . 4))
47           
48         \consists "Clef_engraver";
49         \consists "Key_engraver";
50         \consists "Time_signature_engraver";
51         \consists "Staff_symbol_engraver";
52         \consists "Collision_engraver";
53         \consists "Rest_collision_engraver";
54         \consists "Local_key_engraver";
55
56         \consistsend "Axis_group_engraver";
57
58
59
60 %{
61         The Instrument_name_engraver puts the name of the instrument
62         (\property Staff.instrument; Staff.instr for subsequent lines)
63         to the left of a staff.
64         Usually, you only want this in the full score, not in the parts.
65
66         \consists "Instrument_name_engraver";
67 %}
68
69         defaultClef = #"treble"
70
71         \consists "Separating_line_group_engraver";
72           
73         \accepts "Voice";
74         dynamicStyle = #"dynamic"
75 };
76
77 \translator{\StaffContext }
78 \translator {
79         \type "Engraver_group_engraver";
80         \name ChoirStaff;
81         alignmentReference = \center;
82         \consists "System_start_delimiter_engraver";
83         systemStartDelimiterGlyph = #'bracket
84
85
86
87         \accepts "Staff";
88         \accepts "RhythmicStaff";
89         \accepts "GrandStaff";
90         \accepts "PianoStaff";
91
92                 
93         \accepts "Lyrics";
94         \accepts "ChordNames";
95 }
96
97
98 RhythmicStaffContext=\translator{
99         \type "Engraver_group_engraver";
100         numberOfStaffLines  = #1
101         \consists "Property_engraver";
102         \consists "Output_property_engraver";   
103
104         Generic_property_list = #generic-staff-properties
105         
106         barSize = #'staff-height
107         \consists "Pitch_squash_engraver";
108         \consists "Separating_line_group_engraver";     
109         \name RhythmicStaff;
110
111         voltaPadding = #5  % urg, in \pt
112         voltaMinimumSpace = #15  % urg, in \pt
113         \consists "Repeat_engraver";
114         \consists "Bar_engraver";
115         \consists "Time_signature_engraver";
116         \consists "Staff_symbol_engraver";
117         \consistsend "Axis_group_engraver";
118         \accepts "Voice";
119 };
120 \translator{\RhythmicStaffContext}
121
122 VoiceContext = \translator {
123         \type "Engraver_group_engraver";
124         \name Voice;
125
126         dynamicPadding = #3  % urg, in \pt
127         dynamicMinimumSpace = #6  % urg, in \pt
128
129         Generic_property_list = #generic-voice-properties
130         \consists "Output_property_engraver";   
131
132         \consists "Dynamic_engraver";   % must come before text_engraver.
133         \consists "Property_engraver";
134         
135         \consists "Breathing_sign_engraver";
136         \consists "Rest_engraver";
137         \consists "Dot_column_engraver";
138         \consists "Stem_engraver";
139         \consists "Beam_engraver";
140         \consists "Auto_beam_engraver";
141         \include "auto-beam-settings.ly";
142
143         \consists "Chord_tremolo_engraver";
144         \consists "Melisma_engraver";
145         textScriptPadding = #3.0
146         \consists "Text_engraver";
147         \consists "Piano_pedal_engraver";
148         \consists "Script_engraver";
149         \consists "Script_column_engraver";
150         \consists "Rhythmic_column_engraver";
151         \consists "Slur_engraver";
152         \consists "Tie_engraver";
153         \consists "Tuplet_engraver";
154         \consists "Grace_position_engraver";
155         \consists "Skip_req_swallow_translator";
156         \accepts Thread; % bug if you leave out this!
157         \accepts Grace;
158 };
159
160 GraceContext=\translator {
161         \type "Grace_engraver_group";
162         \name "Grace";
163         \consists "Output_property_engraver";   
164
165         Generic_property_list = #generic-grace-properties
166         
167         \consists "Note_heads_engraver";
168         \consists "Local_key_engraver";
169         \consists "Stem_engraver";
170         \consists "Beam_engraver";
171         \consists "Slur_engraver";
172         
173         \consists "Auto_beam_engraver";
174         \include "auto-beam-settings.ly";
175         \consists "Align_note_column_engraver";
176
177         \consists "Rhythmic_column_engraver";
178         \consists "Dynamic_engraver";
179         \consists "Text_engraver";
180
181         \consists "Property_engraver";
182
183         stemStyle = #"grace"
184         flagStyle = #"grace" 
185         weAreGraceContext = ##t 
186         fontSize = #-1
187         
188         stemLength = #6.0
189         verticalDirection = \up ;
190         graceAccidentalSpace= 1.5 * \staffspace;
191 };
192
193 \translator{\GraceContext}
194 \translator {\VoiceContext}
195
196 ThreadContext = \translator{
197         \type Engraver_group_engraver;
198         \consists "Note_heads_engraver" ;
199         \consists "Output_property_engraver";   
200         Generic_property_list = #generic-thread-properties
201         \consists "Property_engraver";
202         \name Thread;
203 };
204
205 \translator{\ThreadContext}
206 GrandStaffContext=\translator{
207         \type "Engraver_group_engraver";
208         \name GrandStaff;
209         \consists "Span_bar_engraver";
210         \consists "System_start_delimiter_engraver";
211         systemStartDelimiterGlyph = #'brace
212         
213         \consists "Property_engraver";  
214         Generic_property_list = #generic-grand-staff-properties
215         \accepts "Staff";
216 };
217 \translator{\GrandStaffContext}
218
219 PianoStaffContext = \translator{\GrandStaffContext
220         alignmentReference = \center;
221
222         \consists "Vertical_align_engraver";
223         minVerticalAlign = 3.0*\staffheight;
224         maxVerticalAlign = 3.0*\staffheight;
225
226 %       \consistsend "Axis_group_engraver";
227         \name "PianoStaff";
228         
229 };
230 \translator{\PianoStaffContext}
231 StaffGroupContext= \translator {
232         \type "Engraver_group_engraver";
233         \consists "Span_bar_engraver";
234         \consists "Output_property_engraver";   
235         \consists "System_start_delimiter_engraver";
236        systemStartDelimiterGlyph = #'bracket
237        
238
239         \consistsend "Axis_group_engraver" ;
240
241
242         \name StaffGroup;
243         \accepts "Staff";
244         \accepts "RhythmicStaff";
245         \accepts "GrandStaff";
246         \accepts "PianoStaff";
247         
248         \accepts "Lyrics";
249         \accepts "ChordNames";
250 };
251
252 \translator { \StaffGroupContext }
253
254 % UGH! JUNKME
255 LyricsVoiceContext= \translator{
256         \type "Engraver_group_engraver";
257         \consistsend "Axis_group_engraver";
258
259         \name LyricVoice ;
260         \consists "Separating_line_group_engraver";
261         \consists "Lyric_engraver";
262         \consists "Extender_engraver";
263         \consists "Hyphen_engraver";
264 };
265 \translator{ \LyricsVoiceContext }
266
267 LyricsContext = \translator {
268         \type "Engraver_group_engraver";
269         \name Lyrics;
270         \consists Vertical_align_engraver; %need this for getting folded repeats right.
271         Generic_property_list = #generic-lyrics-properties
272         \consists "Property_engraver";
273         \consistsend "Axis_group_engraver";
274         
275         \accepts "LyricVoice";
276 };
277 \translator { \LyricsContext }
278
279 ChordNameVoiceContext = \translator {
280         \type "Engraver_group_engraver";
281         \name ChordNameVoice ;
282
283         \consists "Output_property_engraver";   
284         \consistsend "Axis_group_engraver";
285         \consists "Separating_line_group_engraver";
286         \consists "Chord_name_engraver";
287 };
288 \translator {\ChordNameVoiceContext}
289
290 ChordNameContext = \translator {
291         \type "Engraver_group_engraver";
292         \name ChordNames;
293
294         \consists "Output_property_engraver";   
295         \accepts "ChordNameVoice";
296         \consistsend "Axis_group_engraver";
297         };
298 \translator { \ChordNameContext }
299
300
301 ScoreWithNumbers = \translator {
302         \type "Score_engraver";
303
304         % uncomment to bar numbers on a whole system.
305         \consists "Bar_number_engraver";
306 };
307
308 StupidScore = \translator {
309         \type "Score_engraver";
310         \name Score;
311         \consists "Note_heads_engraver";
312 };
313
314
315
316 BarNumberingStaffContext = \translator {
317         \StaffContext
318         \consists "Mark_engraver";
319         \consists "Bar_number_engraver";
320 };
321
322 HaraKiriStaffContext = \translator {
323         \StaffContext
324         \remove "Axis_group_engraver";
325         \consistsend "Hara_kiri_engraver";        
326         \consists "Instrument_name_engraver";
327         \accepts "Voice";
328 };
329 %{
330   The HaraKiriStaffContexts doesn't override \name,
331   so it is still named `Staff'.
332
333   %\translator { \HaraKiriStaffContext }
334 %}
335
336 OrchestralPartStaffContext = \translator {
337         \StaffContext
338         \consists "Mark_engraver";
339         \consists "Bar_number_engraver";
340 };
341
342 ScoreContext = \translator {
343         \type Score_engraver;
344         \name Score;
345
346         marginScriptPadding = #10  % urg, in \pt
347
348         \consists "Timing_engraver";
349         \consists "Output_property_engraver";   
350
351         %bracketCollapseHeight = #10  % \pt
352         \consists "System_start_delimiter_engraver";
353         
354 %       \consists "Score_priority_engraver";
355         \consists "Break_align_engraver";
356         breakAlignOrder = #'(
357           Instrument_name
358           Left_edge_item
359           Span_bar
360           Breathing_sign
361           Clef_item
362           Key_item
363           Staff_bar
364           Time_signature
365         )
366         \consists "Spacing_engraver";
367         \consists "Vertical_align_engraver";
368         alignmentReference = \down;
369         defaultClef = #"treble"
370         defaultBarType = #"|"
371         \accepts "Staff";
372         \accepts "StaffGroup";
373         \accepts "RhythmicStaff";       
374         \accepts "Lyrics";
375         \accepts "ChordNames";
376         \accepts "GrandStaff";
377         \accepts "ChoirStaff";
378         \accepts "PianoStaff";
379         \accepts "NoteNames";
380
381         markVisibilityFunction = #end-of-line-invisible
382         barNumberVisibilityFunction = #begin-of-line-visible
383 };
384
385 \translator { \ScoreContext }
386
387 OrchestralScoreContext= \translator {
388         \ScoreContext
389
390         barScriptPadding = #2.0         % dimension \pt
391         markScriptPadding = #4.0
392
393         \consists "Bar_number_engraver";
394         \consists "Mark_engraver";
395 };
396
397 \translator {
398         \type "Engraver_group_engraver";
399         \name NoteNames;
400         \consistsend "Axis_group_engraver";
401         \consists "Note_name_engraver";
402 }