]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* scm/chord-name.scm (set-chord-name-style): new function.
[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 = ##f
47         instr = ##f
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 "Porrectus_engraver"
168         \consists "Tuplet_engraver"
169         \consists "A2_engraver"
170
171         \consists "Skip_req_swallow_translator"
172         \accepts Thread % bug if you leave out this!
173 }
174
175 ThreadContext = \translator{
176         \type Engraver_group_engraver
177         \name Thread
178         localKeySignature = #'()
179
180         \consists "Font_size_engraver"  
181         \consists "Thread_devnull_engraver"
182         \consists "Note_heads_engraver"
183         \consists "Rest_engraver"
184         \consists "Note_head_line_engraver"
185         \consists "Output_property_engraver"    
186
187 }
188
189
190
191 GrandStaffContext=\translator{
192         \type "Engraver_group_engraver"
193         \name GrandStaff
194         localKeySignature = #'()
195         \consists "Span_bar_engraver"
196         \consists "Span_arpeggio_engraver"
197         \consists "System_start_delimiter_engraver"
198         systemStartDelimiter = #'SystemStartBrace
199
200         \accepts "Staff"
201 }
202
203 PianoStaffContext = \translator{
204         \GrandStaffContext
205         \name "PianoStaff"
206         \alias "GrandStaff"
207
208         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
209         VerticalAlignment \override #'forced-distance = #12
210         VerticalAlignment \override #'self-alignment-Y = #0
211
212         \consists "Vertical_align_engraver"
213         \consists "Instrument_name_engraver"
214         
215         instrument = #'()
216         instr = #'()
217         
218 %       \consistsend "Axis_group_engraver"
219 }
220
221 InnerStaffGroupContext= \translator {
222         \type "Engraver_group_engraver"
223         \name InnerStaffGroup
224         localKeySignature = #'()
225
226         \consists "Span_bar_engraver"
227         \consists "Span_arpeggio_engraver"
228         \consists "Output_property_engraver"    
229         systemStartDelimiter = #'SystemStartBracket
230
231         \consists "System_start_delimiter_engraver"
232         \accepts "Staff"
233         \accepts "RhythmicStaff"
234         \accepts "GrandStaff"
235         \accepts "PianoStaff"
236         \accepts "TabStaff"     
237         \accepts "Lyrics"
238         \accepts "ChordNames"
239 }
240 StaffGroupContext = \translator {
241         \InnerStaffGroupContext
242         \name StaffGroup
243         \accepts "InnerChoirStaff"
244         \accepts "ChoirStaff"
245         \accepts "InnerStaffGroup"
246         \accepts "FiguredBass"
247 }
248
249
250 % UGH! JUNKME
251 LyricsVoiceContext= \translator{
252         \type "Engraver_group_engraver"
253         \consistsend "Axis_group_engraver"
254         minimumVerticalExtent = #'(-1.2 . 1.2)
255         extraVerticalExtent = ##f
256         verticalExtent = ##f 
257         \name LyricsVoice 
258         \consists "Separating_line_group_engraver"
259         \consists "Lyric_engraver"
260         \consists "Extender_engraver"
261         \consists "Hyphen_engraver"
262         \consists "Stanza_number_engraver"
263         \consists "Skip_req_swallow_translator"
264         phrasingPunctuation = #".,:!?\""
265         
266 }
267 NoteNamesContext = \translator {
268         \type "Engraver_group_engraver"
269         \name NoteNames
270         \consistsend "Axis_group_engraver"
271
272         minimumVerticalExtent = ##f
273         extraVerticalExtent = ##f
274         verticalExtent = ##f 
275
276         
277         \consists "Note_name_engraver"
278         \consists "Separating_line_group_engraver"
279 }
280
281 LyricsContext = \translator {
282         \type "Engraver_group_engraver"
283         \name Lyrics
284         
285         %% To get folded repeats right.
286         \consists Vertical_align_engraver 
287
288         \consistsend "Axis_group_engraver"
289         minimumVerticalExtent = ##f
290         extraVerticalExtent = ##f
291         verticalExtent = ##f 
292         
293         \accepts "LyricsVoice"
294 }
295
296
297 ChordNamesContext = \translator {
298         \type "Engraver_group_engraver"
299         \name ChordNames
300
301         \consists "Output_property_engraver"    
302         \consists "Separating_line_group_engraver"
303         \consists "New_chord_name_engraver"
304         \consists "Skip_req_swallow_translator"
305         \consistsend "Axis_group_engraver"
306         minimumVerticalExtent = ##f
307         extraVerticalExtent = ##f
308         verticalExtent = ##f 
309 }
310
311
312
313 StupidScore = \translator {
314         \type "Score_engraver"
315         \name Score
316         \consists "Note_heads_engraver"
317 }
318
319
320
321
322 HaraKiriStaffContext = \translator {
323         \StaffContext
324         \remove "Axis_group_engraver"
325         \consistsend "Hara_kiri_engraver"
326         \consists "Instrument_name_engraver"
327         \accepts "Voice"
328
329         % hara kiri & auto knee don't work together.
330         Beam \override #'auto-knee-gap = #'()
331 }
332
333 %{
334   The HaraKiriStaffContexts doesn't override \name,
335   so it is still named `Staff'.
336
337   %\translator { \HaraKiriStaffContext }
338 %}
339
340
341
342
343 ScoreContext = \translator {
344         \type Score_engraver
345         \name Score
346         localKeySignature = #'()
347         
348         \consists "Repeat_acknowledge_engraver"
349         \consists "Staff_collecting_engraver"
350
351         % move the alias along with the engraver.
352
353         %% TODO? add this alias from Timing_engraver::initialize() ? 
354         \consists "Timing_engraver"
355         \alias "Timing"
356         
357         \consists "Output_property_engraver"
358         \consists "System_start_delimiter_engraver"
359         \consists "Mark_engraver"       
360         \consists "Break_align_engraver"
361         \consists "Spacing_engraver"
362         \consists "Vertical_align_engraver"
363         \consists "Lyric_phrasing_engraver"
364         \consists "Bar_number_engraver"
365         \consists "Span_arpeggio_engraver"
366
367         \accepts "Staff"
368         \accepts "TabStaff"
369         \accepts "StaffContainer"
370         \accepts "StaffGroup"
371         \accepts "RhythmicStaff"        
372         \accepts "Lyrics"
373         \accepts "ChordNames"
374         \accepts "GrandStaff"
375         \accepts "ChoirStaff"
376         \accepts "PianoStaff"
377         \accepts "NoteNames"
378         \accepts "FiguredBass"  
379
380         soloText = #"Solo"
381         soloIIText = #"Solo II"
382         aDueText = #"a2"
383         soloADue = ##t
384         splitInterval = #'(0 . 1)
385         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
386         systemStartDelimiter =#'SystemStartBar
387
388
389         %% name, glyph id, clef position 
390         %% where is c0 in this clef?
391         clefGlyph = #"clefs-G"
392         clefPosition = #-2
393         centralCPosition = #-6
394         
395         automaticPhrasing = ##t
396         automaticMelismata = ##t
397         
398         defaultBarType = #"|"
399         barNumberVisibility = #default-bar-number-visibility
400
401         explicitClefVisibility = #all-visible
402         explicitKeySignatureVisibility = #all-visible
403         autoBeamSettings = #auto-beam-settings
404         autoBeaming = ##t
405         scriptDefinitions = #default-script-alist
406
407         verticalAlignmentChildCallback = #Align_interface::alignment_callback
408
409         pedalSustainStrings = #'("Ped." "*Ped." "*")
410         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
411
412         %% These are in ordinary italic font, including the *,
413         %% but they are unlikely to be used, 
414         %% as the default pedal-style for SostenutoPedal is 'mixed':
415         %% i.e.  Sost. Ped_____________________ 
416         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
417
418         tupletNumberFormatFunction = #denominator-tuplet-formatter
419         
420         subdivideBeams = ##f
421         extraNatural = ##t
422         autoAccidentals = #'(Staff (same-octave . 0))
423         autoCautionaries = #'()  
424
425
426        keyAccidentalOrder = #'(
427          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
428          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
429          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
430          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
431         )
432         breakAlignOrder = #'(
433           instrument-name
434           left-edge
435           ambitus
436           span-bar
437           breathing-sign
438           clef
439           key-signature
440           staff-bar
441           time-signature
442           custos
443         )
444         barCheckSynchronize = ##t
445         chordNameFunction = #chord->markup-banter
446         chordNameExceptions = #chord::names-alist-banter
447
448         \grobdescriptions #all-grob-descriptions
449 }
450
451 OrchestralScoreContext= \translator {
452         \ScoreContext
453 }
454 EasyNotation =  \translator {
455         \ScoreContext
456         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
457 }
458
459 % retain for compatibility reasons (FIXME: convert-ly)
460 GraceContext = \translator {
461         \type "Engraver_group_engraver"
462 }
463
464 FiguredBassContext = \translator {
465         \type "Engraver_group_engraver"
466         \name FiguredBass 
467         \consists "Figured_bass_engraver"       
468         \consistsend "Axis_group_engraver"
469 }
470
471
472 TabVoiceContext =   \translator {
473       \VoiceContext
474       \name "TabVoice"
475       \denies "Thread"
476       \consists "Tab_note_heads_engraver"
477
478       Slur \override #'font-family       = #'roman
479       Slur \override #'molecule-callback = #hammer-molecule-callback
480       Slur \override #'direction    = #-1
481
482       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
483       % This feature is now disabled because most of the tab does not use it.
484       %Beam \override #'damping = #100000
485       %Stem \override #'up-to-staff = ##t
486
487       % No accidental in tablature !
488       \remove Accidental_engraver
489 }
490
491 TabStaffContext = \translator {
492       \StaffContext
493       \alias "Staff"
494       \name "TabStaff"
495       \denies "Voice"
496       \accepts "TabVoice"
497       
498       % 6 strings
499       StaffSymbol \override #'line-count  = #6
500       StaffSymbol \override #'staff-space = #1.5
501
502       stringOneTopmost = ##t
503       highStringOne = ##t
504
505       % One may change the strings tuning as following :
506       % The lenght of the list must be equal to the number of string
507       %TabNoteHead \override #'string-tunings = #'(10 10 10 10 10 10)
508       
509       % Special "TAB" clef
510       clefGlyph = #"clefs-tab"
511       clefPosition = #0
512       
513       % Don't draw stems over the tablature figures !
514       Stem \override #'avoid-note-head = ##t
515       
516       % No accidental in tablature !
517       \remove Accidental_engraver
518       \remove Key_engraver
519       stringTunings   = #guitar-tunings
520       tablatureFormat = #fret-number-tablature-format
521
522
523 }
524