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