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