]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* lily/text-spanner.cc (brew_molecule): use bracket-flare
[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         SeparationItem \set #'padding = #0.5
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         pedalSustainStyle = #'text
459         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
460         pedalUnaCordaStyle = #'text
461
462         %% These are in ordinary italic font, including the *,
463         %% but they are unlikely to be used, 
464         %% as the default pedal-style for SostenutoPedal is 'mixed':
465         %% i.e.  Sost. Ped_____________________ 
466         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
467         pedalSostenutoStyle = #'mixed
468
469         
470         tupletNumberFormatFunction = #denominator-tuplet-formatter
471         
472         subdivideBeams = ##f
473         allowBeamBreak = ##f
474         extraNatural = ##t
475         autoAccidentals = #'(Staff (same-octave . 0))
476         autoCautionaries = #'()  
477
478        keyAccidentalOrder = #'(
479          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
480          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
481          (6 . -2) (2  . -2) (5 . -2 ) (1  . -2) (4  . -2) (0  . -2) (3 . -2)
482          (3  . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
483         )
484         breakAlignOrder = #'(
485           instrument-name
486           left-edge
487           ambitus
488           breathing-sign
489           clef
490           staff-bar
491           key-signature
492           time-signature
493           custos
494         )
495         barCheckSynchronize = ##t
496
497         %% chord names:
498         chordNameFunction = #ignatzek-chord-names
499         majorSevenSymbol = #whiteTriangleMarkup
500         chordNameSeparator = #(make-simple-markup  "/")
501         chordNameExceptions = #ignatzekExceptions
502         chordNoteNamer = #'()
503         chordRootNamer = #note-name->markup
504
505         chordNameExceptionsFull = #fullJazzExceptions
506         chordNameExceptionsPartial = #partialJazzExceptions
507         
508         %% tablature:
509         stringOneTopmost = ##t
510         highStringOne = ##t
511
512         %% One may change the strings tuning as following :
513         %% The lenght of the list must be equal to the number of string
514         stringTunings   = #guitar-tunings
515         tablatureFormat = #fret-number-tablature-format
516
517         %%
518         bassFigureFormatFunction = #make-bass-figure-markup
519         metronomeMarkFormatter = #make-metronome-markup
520
521         \grobdescriptions #all-grob-descriptions
522 }
523
524 OrchestralScoreContext= \translator {
525         \ScoreContext
526 }
527
528 EasyNotation =  \translator {
529         \ScoreContext
530         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
531 }
532
533
534
535 FiguredBassContext = \translator {
536         \type "Engraver_group_engraver"
537         \name FiguredBass 
538         \consists "Figured_bass_engraver"
539         \consists "Rest_swallow_translator"
540         \consists "Note_swallow_translator"
541         \consists "Separating_line_group_engraver"
542         
543         \consistsend "Hara_kiri_engraver"
544 }
545
546 TabVoiceContext =   \translator {
547       \VoiceContext
548       \name "TabVoice"
549       \denies "Thread"
550       \consists "Tab_note_heads_engraver"
551
552       Slur \override #'font-family       = #'roman
553       Slur \override #'molecule-callback = #hammer-molecule-callback
554       Slur \override #'direction    = #-1
555
556       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
557       % This feature is now disabled because most of the tab does not use it.
558       %Beam \override #'damping = #100000
559       %Stem \override #'up-to-staff = ##t
560
561       % No accidental in tablature !
562       \remove Accidental_engraver
563 }
564
565 TabStaffContext = \translator {
566       \StaffContext
567       \alias "Staff"
568       \name "TabStaff"
569       \denies "Voice"
570
571       \description "Context for generating tablature. [DOCME]"
572       
573       \accepts "TabVoice"
574       
575       % 6 strings
576       StaffSymbol \override #'line-count  = #6
577       StaffSymbol \override #'staff-space = #1.5
578
579      % Don't draw stems over the tablature figures !
580       Stem \override #'avoid-note-head = ##t
581       
582       % No accidental in tablature !
583       \remove Accidental_engraver
584       \remove Key_engraver
585
586       % Special "TAB" clef
587       clefGlyph = #"clefs-tab"
588       clefPosition = #0
589 }
590