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