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