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