]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* Documentation/user/music-glossary.tely: bugfix: #'flag-style =
[lilypond.git] / ly / engraver-init.ly
1 \version "1.7.3"
2
3 %
4 % setup for Request->Element conversion. Guru-only
5 %
6
7 StaffContext=\translator {
8         \type "Engraver_group_engraver"
9         \name Staff 
10         \consists "Output_property_engraver"    
11         
12         \consists "Bar_engraver"
13  % Bar_engraver must be first so default bars aren't overwritten
14 % with empty ones.
15         \consists "Font_size_engraver"
16
17 %       \consists "Repeat_engraver"
18         \consists "Volta_engraver"
19         \consists "Separating_line_group_engraver"      
20         SeparatingGroupSpanner \override #'spacing-procedure
21           =  #Separating_group_spanner::set_spacing_rods_and_seqs
22         \consists "Dot_column_engraver"
23
24         \consists "Clef_engraver"
25         \consists "Key_engraver"
26         \consists "Time_signature_engraver"
27         \consists "Staff_symbol_engraver"
28         \consists "Collision_engraver"
29         \consists "Rest_collision_engraver"
30         \consists "Accidental_engraver"
31         \consists "Piano_pedal_engraver"
32         \consists "Instrument_name_engraver"
33         \consists "Grob_pq_engraver"
34         \consists "Forbid_line_break_engraver"
35         \consistsend "Axis_group_engraver"
36
37         minimumVerticalExtent = #'(-6 . 6)
38         extraVerticalExtent = ##f
39         verticalExtent = ##f 
40         localKeySignature = #'()
41
42         % explicitly set instrument, so we don't get 
43         % weird effects when doing instrument names for
44         % piano staves
45
46         instrument = #'()
47         instr = #'()
48           
49         \accepts "Voice"
50 }
51
52
53 StaffContainerContext = \translator {
54         \type Engraver_group_engraver
55         \consists "Axis_group_engraver"
56         minimumVerticalExtent = ##f
57         extraVerticalExtent = ##f
58         verticalExtent = ##f 
59         localKeySignature = #'()
60
61         \accepts Staff
62         \name StaffContainer
63 }
64
65 InnerChoirStaffContext = \translator {
66         \type "Engraver_group_engraver"
67         \name InnerChoirStaff
68         %% alignmentReference = #0 FIXME
69         \consists "System_start_delimiter_engraver"
70         systemStartDelimiter = #'SystemStartBracket
71         localKeySignature = #'()
72
73         \accepts "Staff"
74         \accepts "RhythmicStaff"
75         \accepts "GrandStaff"
76         \accepts "PianoStaff"
77         \accepts "Lyrics"
78         \accepts "ChordNames"
79 }
80 ChoirStaffContext = \translator {
81         \InnerChoirStaffContext
82         \name ChoirStaff
83         \accepts "InnerChoirStaff"
84         \accepts "InnerStaffGroup"
85 }
86
87
88 RhythmicStaffContext=\translator{
89         \type "Engraver_group_engraver"
90         
91         \consists "Output_property_engraver"    
92
93
94         minimumVerticalExtent = ##f
95         extraVerticalExtent = ##f
96         verticalExtent = ##f 
97         localKeySignature = #'()
98
99         \consists "Pitch_squash_engraver"
100         \consists "Separating_line_group_engraver"      
101         \name RhythmicStaff
102         \alias "Staff"
103         
104         BarLine \override #'bar-size = #4
105         VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
106         VoltaBracket \override #'padding =  #5  % urg, in \pt
107         StaffSymbol \override #'line-count = #1 
108
109         Stem \override #'neutral-direction = #1
110         Beam \override #'neutral-direction = #1         
111 %       \consists "Repeat_engraver"
112         \consists "Dot_column_engraver"
113         \consists "Volta_engraver"
114         \consists "Bar_engraver"
115         \consists "Time_signature_engraver"
116         \consists "Staff_symbol_engraver"
117         \consists "Instrument_name_engraver"
118         \consistsend "Axis_group_engraver"
119         \accepts "Voice"
120 }
121
122
123 VoiceContext = \translator {
124         \type "Engraver_group_engraver"
125         \name Voice
126
127
128         localKeySignature = #'()
129         \consists "Font_size_engraver"
130         
131         % must come before all
132         \consists "Voice_devnull_engraver"
133         \consists "Output_property_engraver"    
134         \consists "Arpeggio_engraver"
135         \consists "Multi_measure_rest_engraver"
136         \consists "Text_spanner_engraver"
137         \consists "Grob_pq_engraver"
138
139         \consists "Ligature_bracket_engraver"
140         \consists "Breathing_sign_engraver"
141         % \consists "Rest_engraver"
142         \consists "Stem_engraver"
143         \consists "Beam_engraver"
144         \consists "Grace_beam_engraver"
145         \consists "Auto_beam_engraver"
146         \consists "New_fingering_engraver"
147         \consists "Chord_tremolo_engraver"
148         \consists "Percent_repeat_engraver"
149         \consists "Melisma_engraver"
150
151 %{
152  Must come before text_engraver, but after note_column engraver.
153
154 %}
155         \consists "Text_engraver"
156         \consists "Dynamic_engraver"
157         \consists "Fingering_engraver"
158
159         \consists "Script_engraver"
160         \consists "Script_column_engraver"
161         \consists "Rhythmic_column_engraver"
162         \consists "Phrasing_slur_engraver"
163         \consists "Cluster_engraver"
164         \consists "Slur_engraver"
165         \consists "Tie_engraver"
166         \consists "New_tie_engraver"
167         \consists "Tuplet_engraver"
168         \consists "A2_engraver"
169
170         \consists "Skip_event_swallow_translator"
171         \accepts Thread % bug if you leave out this!
172 }
173
174 ThreadContext = \translator{
175         \type Engraver_group_engraver
176         \name Thread
177         localKeySignature = #'()
178
179         \consists "Font_size_engraver"  
180         \consists "Thread_devnull_engraver"
181         \consists "Note_heads_engraver"
182         \consists "Rest_engraver"
183
184         % why here ? 
185         \consists "Note_head_line_engraver"
186         \consists "Output_property_engraver"    
187
188 }
189
190
191
192 GrandStaffContext=\translator{
193         \type "Engraver_group_engraver"
194         \name GrandStaff
195         localKeySignature = #'()
196         \consists "Span_bar_engraver"
197         \consists "Span_arpeggio_engraver"
198         \consists "System_start_delimiter_engraver"
199         systemStartDelimiter = #'SystemStartBrace
200
201         \accepts "Staff"
202 }
203
204 PianoStaffContext = \translator{
205         \GrandStaffContext
206         \name "PianoStaff"
207         \alias "GrandStaff"
208
209         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
210         VerticalAlignment \override #'forced-distance = #12
211         VerticalAlignment \override #'self-alignment-Y = #0
212
213         \consists "Vertical_align_engraver"
214         \consists "Instrument_name_engraver"
215         
216         instrument = #'()
217         instr = #'()
218         
219 %       \consistsend "Axis_group_engraver"
220 }
221
222 InnerStaffGroupContext= \translator {
223         \type "Engraver_group_engraver"
224         \name InnerStaffGroup
225         localKeySignature = #'()
226
227         \consists "Span_bar_engraver"
228         \consists "Span_arpeggio_engraver"
229         \consists "Output_property_engraver"    
230         systemStartDelimiter = #'SystemStartBracket
231
232         \consists "System_start_delimiter_engraver"
233         \accepts "Staff"
234         \accepts "RhythmicStaff"
235         \accepts "GrandStaff"
236         \accepts "PianoStaff"
237         \accepts "TabStaff"     
238         \accepts "Lyrics"
239         \accepts "ChordNames"
240 }
241
242 StaffGroupContext = \translator {
243         \InnerStaffGroupContext
244         \name StaffGroup
245         \accepts "InnerChoirStaff"
246         \accepts "ChoirStaff"
247         \accepts "InnerStaffGroup"
248         \accepts "FiguredBass"
249 }
250
251
252 % UGH! JUNKME
253 LyricsVoiceContext= \translator{
254         \type "Engraver_group_engraver"
255         \consistsend "Hara_kiri_engraver"
256         minimumVerticalExtent = #'(-1.2 . 1.2)
257         extraVerticalExtent = ##f
258         verticalExtent = ##f 
259         \name LyricsVoice 
260         \consists "Separating_line_group_engraver"
261         \consists "Lyric_engraver"
262         \consists "Extender_engraver"
263         \consists "Hyphen_engraver"
264         \consists "Stanza_number_engraver"
265         \consists "Skip_event_swallow_translator"
266         phrasingPunctuation = #".,:!?\""
267         
268 }
269 NoteNamesContext = \translator {
270         \type "Engraver_group_engraver"
271         \name NoteNames
272         \consistsend "Axis_group_engraver"
273
274         minimumVerticalExtent = ##f
275         extraVerticalExtent = ##f
276         verticalExtent = ##f 
277
278         
279         \consists "Note_name_engraver"
280         \consists "Separating_line_group_engraver"
281 }
282
283 LyricsContext = \translator {
284         \type "Engraver_group_engraver"
285         \name Lyrics
286         
287         %% To get folded repeats right.
288         \consists Vertical_align_engraver 
289
290         \consistsend "Hara_kiri_engraver"
291         minimumVerticalExtent = ##f
292         extraVerticalExtent = ##f
293         verticalExtent = ##f 
294         
295         \accepts "LyricsVoice"
296 }
297
298
299 ChordNamesContext = \translator {
300         \type "Engraver_group_engraver"
301         \name ChordNames
302
303         \consists "Rest_swallow_translator" 
304         \consists "Output_property_engraver"    
305         \consists "Separating_line_group_engraver"
306         \consists "Chord_name_engraver"
307         \consists "Skip_event_swallow_translator"
308         \consistsend "Hara_kiri_engraver"
309         minimumVerticalExtent = #'(0 . 2.5)
310         extraVerticalExtent = ##f
311         verticalExtent = ##f 
312 }
313
314
315 HaraKiriStaffContext = \translator {
316         \StaffContext
317         \remove "Axis_group_engraver"
318         \consistsend "Hara_kiri_engraver"
319         \consists "Instrument_name_engraver"
320         \accepts "Voice"
321
322         % hara kiri & auto knee don't work together.
323         Beam \override #'auto-knee-gap = #'()
324 }
325
326 %{
327   The HaraKiriStaffContexts doesn't override \name,
328   so it is still named `Staff'.
329
330   %\translator { \HaraKiriStaffContext }
331 %}
332
333
334
335
336 ScoreContext = \translator {
337         \type Score_engraver
338         \name Score
339         localKeySignature = #'()
340         
341         \consists "Repeat_acknowledge_engraver"
342         \consists "Staff_collecting_engraver"
343
344         % move the alias along with the engraver.
345
346         %% TODO? add this alias from Timing_engraver::initialize() ? 
347         \consists "Timing_engraver"
348         \alias "Timing"
349         
350         \consists "Output_property_engraver"
351         \consists "System_start_delimiter_engraver"
352         \consists "Mark_engraver"       
353         \consists "Break_align_engraver"
354         \consists "Spacing_engraver"
355         \consists "Vertical_align_engraver"
356         \consists "Lyric_phrasing_engraver"
357         \consists "Bar_number_engraver"
358         \consists "Span_arpeggio_engraver"
359
360         \accepts "Staff"
361         \accepts "TabStaff"
362         \accepts "StaffContainer"
363         \accepts "StaffGroup"
364         \accepts "RhythmicStaff"        
365         \accepts "Lyrics"
366         \accepts "ChordNames"
367         \accepts "GrandStaff"
368         \accepts "ChoirStaff"
369         \accepts "PianoStaff"
370         \accepts "NoteNames"
371         \accepts "FiguredBass"  
372
373         soloText = #"Solo"
374         soloIIText = #"Solo II"
375         aDueText = #"a2"
376         soloADue = ##t
377         splitInterval = #'(0 . 1)
378         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
379         systemStartDelimiter =#'SystemStartBar
380
381
382         %% name, glyph id, clef position 
383         %% where is c0 in this clef?
384         clefGlyph = #"clefs-G"
385         clefPosition = #-2
386         centralCPosition = #-6
387         
388         automaticPhrasing = ##t
389         automaticMelismata = ##t
390         
391         defaultBarType = #"|"
392         barNumberVisibility = #default-bar-number-visibility
393
394         explicitClefVisibility = #all-visible
395         explicitKeySignatureVisibility = #all-visible
396         autoBeamSettings = #auto-beam-settings
397         autoBeaming = ##t
398         scriptDefinitions = #default-script-alist
399
400         verticalAlignmentChildCallback = #Align_interface::alignment_callback
401
402         pedalSustainStrings = #'("Ped." "*Ped." "*")
403         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
404
405         %% These are in ordinary italic font, including the *,
406         %% but they are unlikely to be used, 
407         %% as the default pedal-style for SostenutoPedal is 'mixed':
408         %% i.e.  Sost. Ped_____________________ 
409         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
410
411         tupletNumberFormatFunction = #denominator-tuplet-formatter
412         
413         subdivideBeams = ##f
414         extraNatural = ##t
415         autoAccidentals = #'(Staff (same-octave . 0))
416         autoCautionaries = #'()  
417
418        keyAccidentalOrder = #'(
419          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
420          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
421          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
422          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
423         )
424         breakAlignOrder = #'(
425           instrument-name
426           left-edge
427           ambitus
428           span-bar
429           breathing-sign
430           clef
431           key-signature
432           staff-bar
433           time-signature
434           custos
435         )
436         barCheckSynchronize = ##t
437
438         %% chord names:
439         chordNameFunction = #ignatzek-chord-names
440         majorSevenSymbol = #whiteTriangleMarkup
441         chordNameSeparator = #(make-simple-markup  "/")
442         chordNameExceptions = #ignatzekExceptions
443         chordNoteNamer = #'()
444         chordRootNamer = #note-name->markup
445         
446         %% tablature:
447         stringOneTopmost = ##t
448         highStringOne = ##t
449
450         %% One may change the strings tuning as following :
451         %% The lenght of the list must be equal to the number of string
452       
453         stringTunings   = #guitar-tunings
454         tablatureFormat = #fret-number-tablature-format
455
456         %%
457         bassFigureFormatFunction = #make-bass-figure-markup
458
459
460         \grobdescriptions #all-grob-descriptions
461 }
462
463 OrchestralScoreContext= \translator {
464         \ScoreContext
465 }
466 EasyNotation =  \translator {
467         \ScoreContext
468         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
469 }
470
471 % retain for compatibility reasons (FIXME: convert-ly)
472 GraceContext = \translator {
473         \type "Engraver_group_engraver"
474 }
475
476 FiguredBassContext = \translator {
477         \type "Engraver_group_engraver"
478         \name FiguredBass 
479         \consists "Figured_bass_engraver"
480         \consists "Rest_swallow_translator"
481         \consists "Note_swallow_translator"
482         \consists "Separating_line_group_engraver"
483         
484         \consistsend "Hara_kiri_engraver"
485 }
486
487 TabVoiceContext =   \translator {
488       \VoiceContext
489       \name "TabVoice"
490       \denies "Thread"
491       \consists "Tab_note_heads_engraver"
492
493       Slur \override #'font-family       = #'roman
494       Slur \override #'molecule-callback = #hammer-molecule-callback
495       Slur \override #'direction    = #-1
496
497       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
498       % This feature is now disabled because most of the tab does not use it.
499       %Beam \override #'damping = #100000
500       %Stem \override #'up-to-staff = ##t
501
502       % No accidental in tablature !
503       \remove Accidental_engraver
504 }
505
506 TabStaffContext = \translator {
507       \StaffContext
508       \alias "Staff"
509       \name "TabStaff"
510       \denies "Voice"
511       \accepts "TabVoice"
512       
513       % 6 strings
514       StaffSymbol \override #'line-count  = #6
515       StaffSymbol \override #'staff-space = #1.5
516
517      % Don't draw stems over the tablature figures !
518       Stem \override #'avoid-note-head = ##t
519       
520       % No accidental in tablature !
521       \remove Accidental_engraver
522       \remove Key_engraver
523
524       % Special "TAB" clef
525       clefGlyph = #"clefs-tab"
526       clefPosition = #0
527 }
528