release commit
[lilypond.git] / ly / engraver-init.ly
blob23a1e1045ed1b388d32ef8860b7ffa9b314478a2
1 \version "1.9.1"
5 % setup for Request->Element conversion. Guru-only
8 StaffContext=\translator {
9 \type "Engraver_group_engraver"
10 \name Staff
12 \description "Handles clefs, bar lines, keys, accidentals. It can contain
13 @code{Voice} contexts."
16 \consists "Output_property_engraver"
18 \consists "Bar_engraver"
19 % Bar_engraver must be first so default bars aren't overwritten
20 % with empty ones.
21 \consists "Font_size_engraver"
23 % \consists "Repeat_engraver"
24 \consists "Volta_engraver"
25 \consists "Separating_line_group_engraver"
26 SeparatingGroupSpanner \override #'spacing-procedure
27 = #Separating_group_spanner::set_spacing_rods_and_seqs
28 \consists "Dot_column_engraver"
30 % perhaps move to Voice context?
31 \consists "Ottava_spanner_engraver"
32 \consists "Clef_engraver"
33 \consists "Key_engraver"
34 \consists "Time_signature_engraver"
35 \consists "Staff_symbol_engraver"
36 \consists "Collision_engraver"
37 \consists "Rest_collision_engraver"
38 \consists "Accidental_engraver"
39 \consists "Piano_pedal_engraver"
40 \consists "Instrument_name_engraver"
41 \consists "Grob_pq_engraver"
42 \consists "Forbid_line_break_engraver"
43 \consistsend "Axis_group_engraver"
45 minimumVerticalExtent = #'(-6 . 6)
46 extraVerticalExtent = ##f
47 verticalExtent = ##f
48 localKeySignature = #'()
50 % explicitly set instrument, so we don't get
51 % weird effects when doing instrument names for
52 % piano staves
54 instrument = #'()
55 instr = #'()
57 \accepts "Voice"
61 StaffContainerContext = \translator {
62 \type Engraver_group_engraver
63 \consists "Axis_group_engraver"
64 minimumVerticalExtent = ##f
65 extraVerticalExtent = ##f
66 verticalExtent = ##f
67 localKeySignature = #'()
69 \accepts Staff
70 \name StaffContainer
73 InnerChoirStaffContext = \translator {
74 \type "Engraver_group_engraver"
75 \name InnerChoirStaff
76 \consists "System_start_delimiter_engraver"
77 systemStartDelimiter = #'SystemStartBracket
78 localKeySignature = #'()
80 \accepts "Staff"
81 \accepts "RhythmicStaff"
82 \accepts "GrandStaff"
83 \accepts "PianoStaff"
84 \accepts "Lyrics"
85 \accepts "ChordNames"
88 ChoirStaffContext = \translator {
89 \InnerChoirStaffContext
90 \name ChoirStaff
92 \description "Identical to @code{StaffGroup} except that the
93 contained staves are not connected vertically."
95 \accepts "InnerChoirStaff"
96 \accepts "InnerStaffGroup"
100 RhythmicStaffContext=\translator{
101 \type "Engraver_group_engraver"
103 \consists "Output_property_engraver"
105 \description "
106 A context like @code{Staff} but for printing rhythms. Pitches are
107 ignored; the notes are printed on one line.
109 minimumVerticalExtent = ##f
110 extraVerticalExtent = ##f
111 verticalExtent = ##f
112 localKeySignature = #'()
114 \consists "Pitch_squash_engraver"
115 \consists "Separating_line_group_engraver"
116 \name RhythmicStaff
117 \alias "Staff"
119 BarLine \override #'bar-size = #4
120 VoltaBracket \override #'minimum-space = #15 % urg, in \pt
121 VoltaBracket \override #'padding = #5 % urg, in \pt
122 StaffSymbol \override #'line-count = #1
124 Stem \override #'neutral-direction = #1
125 Beam \override #'neutral-direction = #1
126 % \consists "Repeat_engraver"
127 \consists "Dot_column_engraver"
128 \consists "Volta_engraver"
129 \consists "Bar_engraver"
130 \consists "Time_signature_engraver"
131 \consists "Staff_symbol_engraver"
132 \consists "Instrument_name_engraver"
133 \consistsend "Axis_group_engraver"
134 \accepts "Voice"
138 VoiceContext = \translator {
139 \type "Engraver_group_engraver"
140 \name Voice
142 \description "
143 Corresponds to a voice on a staff. This context handles the
144 conversion of dynamic signs, stems, beams, super- and subscripts,
145 slurs, ties, and rests.
147 You have to instantiate this explicitly if you want to have
148 multiple voices on the same staff."
150 localKeySignature = #'()
151 \consists "Font_size_engraver"
153 % must come before all
154 \consists "Voice_devnull_engraver"
155 \consists "Output_property_engraver"
156 \consists "Arpeggio_engraver"
157 \consists "Multi_measure_rest_engraver"
158 \consists "Text_spanner_engraver"
159 \consists "Grob_pq_engraver"
161 \consists "Note_head_line_engraver"
162 \consists "Glissando_engraver"
163 \consists "Ligature_bracket_engraver"
164 \consists "Breathing_sign_engraver"
165 % \consists "Rest_engraver"
166 \consists "Stem_engraver"
167 \consists "Beam_engraver"
168 \consists "Grace_beam_engraver"
169 \consists "Auto_beam_engraver"
170 \consists "New_fingering_engraver"
171 \consists "Chord_tremolo_engraver"
172 \consists "Percent_repeat_engraver"
173 \consists "Slash_repeat_engraver"
174 \consists "Melisma_engraver"
177 Must come before text_engraver, but after note_column engraver.
180 \consists "Text_engraver"
181 \consists "Dynamic_engraver"
182 \consists "Fingering_engraver"
184 \consists "Script_engraver"
185 \consists "Script_column_engraver"
186 \consists "Rhythmic_column_engraver"
187 \consists "Phrasing_slur_engraver"
188 \consists "Cluster_spanner_engraver"
189 \consists "Slur_engraver"
190 \consists "Tie_engraver"
191 \consists "Tuplet_engraver"
192 \consists "A2_engraver"
194 \consists "Skip_event_swallow_translator"
195 \accepts Thread % bug if you leave out this!
198 ThreadContext = \translator{
199 \type Engraver_group_engraver
200 \name Thread
201 localKeySignature = #'()
202 \description "
203 Handles note heads, and is contained in the Voice context. You
204 have to instantiate this explicitly if you want to adjust the
205 style of individual note heads.
207 \consists "Font_size_engraver"
208 \consists "Thread_devnull_engraver"
209 \consists "Note_heads_engraver"
210 \consists "Rest_engraver"
212 % why here ?
213 \consists "Output_property_engraver"
218 GrandStaffContext=\translator{
219 \type "Engraver_group_engraver"
220 \name GrandStaff
221 localKeySignature = #'()
223 \description " A group of staffs, with a brace on the left
224 side, grouping the staves together. The bar lines of the
225 contained staves are connected vertically. "
227 \consists "Span_bar_engraver"
228 \consists "Span_arpeggio_engraver"
229 \consists "System_start_delimiter_engraver"
230 systemStartDelimiter = #'SystemStartBrace
232 \accepts "Staff"
235 PianoStaffContext = \translator{
236 \GrandStaffContext
237 \name "PianoStaff"
238 \alias "GrandStaff"
239 \description "
240 Just like @code{GrandStaff} but with @code{minVerticalAlign} set
241 equal to @code{maxVerticalAlign} so that interstaff beaming and
242 slurring can be used."
243 verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
244 VerticalAlignment \override #'forced-distance = #12
245 VerticalAlignment \override #'self-alignment-Y = #0
247 \consists "Vertical_align_engraver"
248 \consists "Instrument_name_engraver"
250 instrument = #'()
251 instr = #'()
253 % \consistsend "Axis_group_engraver"
256 InnerStaffGroupContext= \translator {
257 \type "Engraver_group_engraver"
258 \name InnerStaffGroup
259 localKeySignature = #'()
261 \consists "Span_bar_engraver"
262 \consists "Span_arpeggio_engraver"
263 \consists "Output_property_engraver"
264 systemStartDelimiter = #'SystemStartBracket
266 \consists "System_start_delimiter_engraver"
267 \accepts "Staff"
268 \accepts "RhythmicStaff"
269 \accepts "GrandStaff"
270 \accepts "PianoStaff"
271 \accepts "TabStaff"
272 \accepts "Lyrics"
273 \accepts "ChordNames"
276 StaffGroupContext = \translator {
277 \InnerStaffGroupContext
278 \name StaffGroup
280 \description
282 " Groups staffs while adding a bracket on the left side,
283 grouping the staves together. The bar lines of the contained
284 staves are connected vertically.
287 \accepts "InnerChoirStaff"
288 \accepts "ChoirStaff"
289 \accepts "InnerStaffGroup"
290 \accepts "FiguredBass"
294 % UGH! JUNKME
295 LyricsVoiceContext= \translator{
296 \type "Engraver_group_engraver"
297 \consistsend "Hara_kiri_engraver"
298 minimumVerticalExtent = #'(-1.2 . 2.4)
299 extraVerticalExtent = ##f
300 verticalExtent = ##f
302 \description "
303 Corresponds to a voice with lyrics. Handles the printing of a
304 single line of lyrics.
307 \name LyricsVoice
308 \consists "Separating_line_group_engraver"
309 \consists "Lyric_engraver"
310 \consists "Extender_engraver"
311 \consists "Hyphen_engraver"
312 \consists "Stanza_number_engraver"
313 \consists "Skip_event_swallow_translator"
314 phrasingPunctuation = #".,:!?\""
315 SeparationItem \set #'padding = #0.5
317 NoteNamesContext = \translator {
318 \type "Engraver_group_engraver"
319 \name NoteNames
320 \consistsend "Axis_group_engraver"
322 minimumVerticalExtent = ##f
323 extraVerticalExtent = ##f
324 verticalExtent = ##f
327 \consists "Note_name_engraver"
328 \consists "Separating_line_group_engraver"
331 LyricsContext = \translator {
332 \type "Engraver_group_engraver"
333 \name Lyrics
334 \description "Typesets lyrics."
335 %% To get folded repeats right.
336 \consists Vertical_align_engraver
338 \consistsend "Hara_kiri_engraver"
339 minimumVerticalExtent = ##f
340 extraVerticalExtent = ##f
341 verticalExtent = ##f
343 \accepts "LyricsVoice"
347 ChordNamesContext = \translator {
348 \type "Engraver_group_engraver"
349 \name ChordNames
350 \description " Typesets chord names."
352 \consists "Rest_swallow_translator"
353 \consists "Output_property_engraver"
354 \consists "Separating_line_group_engraver"
355 \consists "Chord_name_engraver"
356 \consists "Skip_event_swallow_translator"
357 \consistsend "Hara_kiri_engraver"
358 minimumVerticalExtent = #'(0 . 2.5)
359 extraVerticalExtent = ##f
360 verticalExtent = ##f
364 RemoveEmptyStaffContext = \translator {
365 \StaffContext
366 \remove "Axis_group_engraver"
367 \consistsend "Hara_kiri_engraver"
368 \accepts "Voice"
370 % hara kiri & auto knee don't work together.
371 Beam \override #'auto-knee-gap = #'()
374 RemoveEmptyStaffContext = \translator {
375 \RemoveEmptyStaffContext
376 \accepts "VaticanaVoice"
377 \accepts "GregorianTranscriptionVoice"
380 ScoreContext = \translator {
381 \type Score_engraver
382 \name Score
383 localKeySignature = #'()
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.
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."
396 \consists "Repeat_acknowledge_engraver"
397 \consists "Staff_collecting_engraver"
399 % move the alias along with the engraver.
401 %% TODO? add this alias from Timing_engraver::initialize() ?
402 \consists "Timing_engraver"
403 \alias "Timing"
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"
416 \accepts "Staff"
417 \accepts "TabStaff"
418 \accepts "VaticanaStaff"
419 \accepts "GregorianTranscriptionStaff"
420 \accepts "StaffContainer"
421 \accepts "StaffGroup"
422 \accepts "RhythmicStaff"
423 \accepts "Lyrics"
424 \accepts "ChordNames"
425 \accepts "GrandStaff"
426 \accepts "ChoirStaff"
427 \accepts "PianoStaff"
428 \accepts "NoteNames"
429 \accepts "FiguredBass"
431 soloText = #"Solo"
432 soloIIText = #"Solo II"
433 aDueText = #"a2"
434 soloADue = ##t
435 splitInterval = #'(0 . 1)
436 changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
437 systemStartDelimiter =#'SystemStartBar
440 clefGlyph = #"clefs-G"
441 clefPosition = #-2
442 centralCPosition = #-6
444 automaticPhrasing = ##t
445 automaticMelismata = ##t
447 defaultBarType = #"|"
448 barNumberVisibility = #default-bar-number-visibility
449 automaticBars = ##t
451 explicitClefVisibility = #all-visible
452 explicitKeySignatureVisibility = #all-visible
453 autoBeamSettings = #default-auto-beam-settings
454 autoBeaming = ##t
455 scriptDefinitions = #default-script-alist
457 verticalAlignmentChildCallback = #Align_interface::alignment_callback
459 pedalSustainStrings = #'("Ped." "*Ped." "*")
460 pedalSustainStyle = #'text
461 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
462 pedalUnaCordaStyle = #'text
464 %% These are in ordinary italic font, including the *,
465 %% but they are unlikely to be used,
466 %% as the default pedal-style for SostenutoPedal is 'mixed':
467 %% i.e. Sost. Ped_____________________
468 pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
469 pedalSostenutoStyle = #'mixed
472 tupletNumberFormatFunction = #denominator-tuplet-formatter
474 subdivideBeams = ##f
475 allowBeamBreak = ##f
476 extraNatural = ##t
477 autoAccidentals = #'(Staff (same-octave . 0))
478 autoCautionaries = #'()
480 keyAccidentalOrder = #'(
481 (6 . -1) (2 . -1) (5 . -1 ) (1 . -1) (4 . -1) (0 . -1) (3 . -1)
482 (3 . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
483 (6 . -2) (2 . -2) (5 . -2 ) (1 . -2) (4 . -2) (0 . -2) (3 . -2)
484 (3 . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2)
486 breakAlignOrder = #'(
487 instrument-name
488 left-edge
489 ambitus
490 breathing-sign
491 clef
492 staff-bar
493 key-signature
494 time-signature
495 custos
497 barCheckSynchronize = ##t
499 %% chord names:
500 chordNameFunction = #ignatzek-chord-names
501 majorSevenSymbol = #whiteTriangleMarkup
502 chordNameSeparator = #(make-simple-markup "/")
503 chordNameExceptions = #ignatzekExceptions
504 chordNoteNamer = #'()
505 chordRootNamer = #note-name->markup
507 chordNameExceptionsFull = #fullJazzExceptions
508 chordNameExceptionsPartial = #partialJazzExceptions
510 %% tablature:
511 stringOneTopmost = ##t
512 highStringOne = ##t
514 %% One may change the strings tuning as following :
515 %% The lenght of the list must be equal to the number of string
516 stringTunings = #guitar-tunings
517 tablatureFormat = #fret-number-tablature-format
520 bassFigureFormatFunction = #make-bass-figure-markup
521 metronomeMarkFormatter = #make-metronome-markup
523 \grobdescriptions #all-grob-descriptions
526 OrchestralScoreContext= \translator {
527 \ScoreContext
530 EasyNotation = \translator {
531 \ScoreContext
532 NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
537 FiguredBassContext = \translator {
538 \type "Engraver_group_engraver"
539 \name FiguredBass
540 \consists "Figured_bass_engraver"
541 \consists "Rest_swallow_translator"
542 \consists "Note_swallow_translator"
543 \consists "Separating_line_group_engraver"
545 \consistsend "Hara_kiri_engraver"
548 TabVoiceContext = \translator {
549 \VoiceContext
550 \name "TabVoice"
551 \denies "Thread"
552 \consists "Tab_note_heads_engraver"
553 \remove "Fingering_engraver"
554 \remove "New_fingering_engraver"
556 Slur \override #'font-family = #'roman
557 Slur \override #'molecule-callback = #hammer-molecule-callback
558 Slur \override #'direction = #-1
560 % Draws all stems/beams out of the staff (and not in the middle of the staff !)
561 % This feature is now disabled because most of the tab does not use it.
562 %Beam \override #'damping = #100000
563 %Stem \override #'up-to-staff = ##t
565 % No accidental in tablature !
566 \remove Accidental_engraver
569 TabStaffContext = \translator {
570 \StaffContext
571 \alias "Staff"
572 \name "TabStaff"
573 \denies "Voice"
575 \description "Context for generating tablature. [DOCME]"
577 \accepts "TabVoice"
579 % 6 strings
580 StaffSymbol \override #'line-count = #6
581 StaffSymbol \override #'staff-space = #1.5
583 % Don't draw stems over the tablature figures !
584 Stem \override #'avoid-note-head = ##t
586 % No accidental in tablature !
587 \remove Accidental_engraver
588 \remove Key_engraver
590 % Special "TAB" clef
591 clefGlyph = #"clefs-tab"
592 clefPosition = #0
595 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
596 % but this does not work (is this a bug or intended behaviour?):
598 % If I try to do so, I get "error: unknown escaped string:
599 % `\VaticanaStaffContext'" in params-init.ly. If I also move
600 % "\translator { \Vaticana*Context }" from params-init.ly to the end
601 % of gregorian-init.ly, then I get "error: parse error, unexpected
602 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
603 % gregorian-init.ly. --jr
605 VaticanaVoiceContext = \translator {
606 \VoiceContext
607 \name "VaticanaVoice"
608 \alias "Voice"
609 \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
611 % We can not remove Slur_engraver, since \addlyrics depends on it.
612 % Instead, we make the grob transparent.
613 % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
614 % infinite steepness reqd"), since in ligatures, all note heads are in
615 % the same paper column such that the (transparent) slurs eventually may
616 % start and end in the same column.
617 Slur \override #'transparent = ##t
619 % We can not remove Stem_engraver, since slurs depend on stems. If
620 % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
621 % in position 1 (expecting grob): ()".
622 % As a workaround, we make the grob transparent.
623 Stem \set #'transparent = ##t
625 % Since we do not remove stems, but only make it transparent, we have
626 % to set the length to 0.0. Otherwise, articulation marks (such as
627 % ictus, circulus or accentus) may be vertically placed quite away from
628 % the note head.
629 Stem \set #'length = #'0.0
631 \remove "Ligature_bracket_engraver"
632 \consists "Vaticana_ligature_engraver"
634 % Set default head for notes outside of \[ \].
635 NoteHead \set #'style = #'vaticana_punctum
637 % Put some space before and after divisiones.
638 % FIXME: This does not seem to show any effect.
639 Script \set #'padding = #0.5
641 % There are no beams in Gregorian Chant notation.
642 autobeaming = ##f
644 % Prepare TextSpanner for \episem{Initium|Finis} use.
645 TextSpanner \set #'style = #'line
646 TextSpanner \set #'edge-height = #'(0 . 0)
647 TextSpanner \set #'padding = #0.5
648 TextSpanner \set #'enclose-bounds = ##t
649 TextSpanner \set #'edge-text = #'("" . "")
652 VaticanaStaffContext = \translator {
653 \StaffContext
654 \name "VaticanaStaff"
655 \alias "Staff"
656 \denies "Voice"
657 \accepts "VaticanaVoice"
658 \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
660 \remove "Time_signature_engraver"
661 \consists "Custos_engraver"
663 % We can not remove Bar_engraver; otherwise clefs and custodes will
664 % not show up any more among other line breaking issues.
665 % Instead, we make the grob transparent.
666 BarLine \set #'transparent = ##t
668 StaffSymbol \set #'line-count = #4
670 % FIXME: unit on StaffSymbol's width should be \linewidth.
671 % StaffSymbol \set #'width = #60.0
673 % Choose vaticana do clef on 3rd line as default.
674 clefGlyph = #"clefs-vaticana_do"
675 centralCPosition = #1
676 clefPosition = #1
677 clefOctavation = #0
679 % Select vaticana style font.
680 KeySignature \set #'style = #'vaticana
681 Accidental \set #'style = #'vaticana
682 Custos \set #'style = #'vaticana
683 Custos \set #'neutral-position = #3
684 Custos \set #'neutral-direction = #-1
685 Custos \set #'adjust-if-on-staffline = ##t
687 % Score.timing = ##f
688 % Score.barAlways = ##t
691 GregorianTranscriptionVoiceContext = \translator {
692 \VoiceContext
693 \name "GregorianTranscriptionVoice"
694 \alias "Voice"
696 % Removing ligature bracket engraver without replacing it by some
697 % other ligature engraver would cause a "Junking event: `LigatureEvent'"
698 % warning for every "\[" and "\]". Therefore, we make the grob
699 % transparent instead.
700 LigatureBracket \set #'transparent = ##t
702 % We can not remove Slur_engraver, since \addlyrics depends on it.
703 % Instead, we make the grob transparent.
704 % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
705 % infinite steepness reqd"), since in ligatures, all note heads are in
706 % the same paper column such that the (transparent) slurs eventually may
707 % start and end in the same column.
708 Slur \override #'transparent = ##t
710 % We can not remove Stem_engraver, since slurs depend on stems. If
711 % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
712 % in position 1 (expecting grob): ()".
713 % As a workaround, we make the grob transparent.
714 Stem \set #'transparent = ##t
716 % Since we do not remove stems, but only make it transparent, we have
717 % to set the length to 0.0. Otherwise, articulation marks (such as
718 % ictus, circulus or accentus) may be vertically placed quite away from
719 % the note head.
720 Stem \set #'length = #'0.0
722 % Put some space before and after divisiones.
723 % FIXME: This does not seem to show any effect.
724 Script \set #'padding = #0.5
726 % There are no beams in Gregorian Chant notation.
727 autobeaming = ##f
729 % Prepare TextSpanner for \episem{Initium|Finis} use.
730 TextSpanner \set #'style = #'line
731 TextSpanner \set #'edge-height = #'(0 . 0)
732 TextSpanner \set #'padding = #0.5
733 TextSpanner \set #'enclose-bounds = ##t
734 TextSpanner \set #'edge-text = #'("" . "")
737 GregorianTranscriptionStaffContext = \translator {
738 \StaffContext
739 \name "GregorianTranscriptionStaff"
740 \alias "Staff"
741 \denies "Voice"
742 \accepts "GregorianTranscriptionVoice"
744 % We can not remove Bar_engraver; otherwise clefs and custodes will
745 % not show up any more among other line breaking issues.
746 % Instead, we make the grob transparent.
747 BarLine \set #'transparent = ##t