]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
patch::: 1.3.35.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         \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 = #5  % urg, in \pt
122         dynamicMinimumSpace = #10  % 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
174         \consists "Property_engraver";
175
176         stemStyle = #"grace"
177         flagStyle = #"grace" 
178         weAreGraceContext = ##t 
179         fontSize = #-1
180         
181         stemLength = #6.0
182         verticalDirection = \up ;
183         graceAccidentalSpace= 1.5 * \staffspace;
184 };
185
186 \translator{\GraceContext}
187 \translator {\VoiceContext}
188
189 ThreadContext = \translator{
190         \type Engraver_group_engraver;
191         \consists "Note_heads_engraver" ;
192         \consists "Output_property_engraver";   
193         Generic_property_list = #generic-thread-properties
194         \consists "Property_engraver";
195         \name Thread;
196 };
197
198 \translator{\ThreadContext}
199 GrandStaffContext=\translator{
200         \type "Engraver_group_engraver";
201         \name GrandStaff;
202         \consists "Span_bar_engraver";
203         \consists "Piano_bar_engraver";
204         \consists "Property_engraver";  
205         Generic_property_list = #generic-grand-staff-properties
206         \accepts "Staff";
207 };
208 \translator{\GrandStaffContext}
209
210 PianoStaffContext = \translator{\GrandStaffContext
211         alignmentReference = \center;
212
213         \consists "Vertical_align_engraver";
214         minVerticalAlign = 3.0*\staffheight;
215         maxVerticalAlign = 3.0*\staffheight;
216
217 %       \consistsend "Axis_group_engraver";
218         \name "PianoStaff";
219         
220 };
221 \translator{\PianoStaffContext}
222 StaffGroupContext= \translator {
223         \type "Engraver_group_engraver";
224         \consists "Span_bar_engraver";
225         \consists "Output_property_engraver";   
226         \consists "Staff_group_bar_engraver";
227
228         \name StaffGroup;
229         \accepts "Staff";
230         \accepts "RhythmicStaff";
231         \accepts "GrandStaff";
232         \accepts "PianoStaff";
233         
234         \accepts "Lyrics";
235         \accepts "ChordNames";
236 };
237
238 \translator { \StaffGroupContext }
239
240 % UGH! JUNKME
241 LyricsVoiceContext= \translator{
242         \type "Engraver_group_engraver";
243         \consistsend "Axis_group_engraver";
244
245         \name LyricVoice ;
246         \consists "Separating_line_group_engraver";
247         \consists "Lyric_engraver";
248         \consists "Extender_engraver";
249         \consists "Hyphen_engraver";
250 };
251 \translator{ \LyricsVoiceContext }
252
253 LyricsContext = \translator {
254         \type "Engraver_group_engraver";
255         \name Lyrics;
256         \consists Vertical_align_engraver;%need this for getting folded repeats right.
257
258         \consists "Property_engraver";
259         \consistsend "Axis_group_engraver";
260         
261         \accepts "LyricVoice";
262 };
263 \translator { \LyricsContext }
264
265 ChordNameVoiceContext = \translator {
266         \type "Engraver_group_engraver";
267         \name ChordNameVoice ;
268
269         \consists "Output_property_engraver";   
270         \consistsend "Axis_group_engraver";
271         \consists "Separating_line_group_engraver";
272         \consists "Chord_name_engraver";
273 };
274 \translator {\ChordNameVoiceContext}
275
276 ChordNameContext = \translator {
277         \type "Engraver_group_engraver";
278         \name ChordNames;
279
280         \consists "Output_property_engraver";   
281         \accepts "ChordNameVoice";
282         \consistsend "Axis_group_engraver";
283         };
284 \translator { \ChordNameContext }
285
286
287 ScoreWithNumbers = \translator {
288         \type "Score_engraver";
289
290         % uncomment to bar numbers on a whole system.
291         \consists "Bar_number_engraver";
292 };
293
294 StupidScore = \translator {
295         \type "Score_engraver";
296         \name Score;
297         \consists "Note_heads_engraver";
298 };
299
300
301
302 BarNumberingStaffContext = \translator {
303         \StaffContext
304         \consists "Mark_engraver";
305         \consists "Bar_number_engraver";
306 };
307
308 HaraKiriStaffContext = \translator {
309         \StaffContext
310         \remove "Axis_group_engraver";
311         \consistsend "Hara_kiri_engraver";        
312         \consists "Staff_margin_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 OrchestralPartStaffContext = \translator {
323         \StaffContext
324         \consists "Mark_engraver";
325         \consists "Bar_number_engraver";
326 };
327
328 ScoreContext = \translator {
329         \type Score_engraver;
330         \name Score;
331
332         marginScriptPadding = #10  % urg, in \pt
333
334         \consists "Timing_engraver";
335         \consists "Output_property_engraver";   
336
337         %bracketCollapseHeight = #10  % \pt
338         \consists "Span_score_bar_engraver";
339 %       \consists "Score_priority_engraver";
340         \consists "Break_align_engraver";
341         breakAlignOrder = #'(
342           "Left_edge_item"
343           "Span_bar"
344           "Breathing_sign"
345           "Clef_item"
346           "Key_item"
347           "Staff_bar"
348           "Time_signature"
349         )
350         \consists "Spacing_engraver";
351         \consists "Vertical_align_engraver";
352         alignmentReference = \down;
353         defaultClef = #"treble"
354         defaultBarType = #"|"
355         \accepts "Staff";
356         \accepts "StaffGroup";
357         \accepts "RhythmicStaff";       
358         \accepts "Lyrics";
359         \accepts "ChordNames";
360         \accepts "GrandStaff";
361         \accepts "ChoirStaff";
362         \accepts "PianoStaff";
363         \accepts "NoteNames";
364
365         markVisibilityFunction = #end-of-line-invisible
366         barNumberVisibilityFunction = #begin-of-line-visible
367         marginVisibilityFunction = #begin-of-line-visible
368 };
369
370 \translator { \ScoreContext }
371
372 OrchestralScoreContext= \translator {
373         \ScoreContext
374
375         barScriptPadding = #2.0         % dimension \pt
376         markScriptPadding = #4.0
377
378         \consists "Bar_number_engraver";
379         \consists "Mark_engraver";
380 };
381
382 \translator {
383         \type "Engraver_group_engraver";
384         \name NoteNames;
385         \consistsend "Axis_group_engraver";
386         \consists "Note_name_engraver";
387 }