*** empty log message ***
[lilypond.git] / ly / engraver-init.ly
blob7b0d7b99b039c4149b0386ede2fb053be8d9d9bf
1 \version "2.1.36"
3 \context {
4 \name Global
6 \accepts Score
7 \description "Hard coded entry point for LilyPond. Cannot be tuned."
8 \grobdescriptions #all-grob-descriptions
12 % setup for Request->Element conversion. Guru-only
15 \context {
16 \type "Engraver_group_engraver"
17 \name Staff
20 \consists "Output_property_engraver"
22 \consists "Bar_engraver"
23 % Bar_engraver must be first so default bars aren't overwritten
24 % with empty ones.
26 \consists "Font_size_engraver"
28 \consists "Volta_engraver"
29 \consists "Separating_line_group_engraver"
30 \consists "Dot_column_engraver"
32 % perhaps move to Voice context?
33 \consists "Ottava_spanner_engraver"
34 \consists "Clef_engraver"
35 \consists "Key_engraver"
36 \consists "Time_signature_engraver"
37 \consists "Staff_symbol_engraver"
38 \consists "Collision_engraver"
39 \consists "Rest_collision_engraver"
40 \consists "Accidental_engraver"
41 \consists "Piano_pedal_engraver"
42 \consists "Instrument_name_engraver"
43 \consists "String_number_engraver"
44 \consistsend "Axis_group_engraver"
46 minimumVerticalExtent = #'(-6 . 6)
47 extraVerticalExtent = ##f
48 verticalExtent = ##f
49 localKeySignature = #'()
50 createSpacing = ##t
51 % explicitly set instrument, so we don't get
52 % weird effects when doing instrument names for
53 % piano staves
55 instrument = #'()
56 instr = #'()
58 \accepts "Voice"
59 \description "Handles clefs, bar lines, keys, accidentals. It can contain
60 @code{Voice} contexts."
64 \context {
65 \StaffContext
66 \type "Engraver_group_engraver"
67 \name DrumStaff
68 \alias Staff
70 \remove "Accidental_engraver"
71 \remove "Ottava_spanner_engraver"
72 \remove "Key_engraver"
73 \remove "Piano_pedal_engraver"
74 \remove "String_number_engraver"
76 \description "Handles typesetting for percussion."
78 \denies Voice
79 \accepts DrumVoice
81 clefGlyph = #"clefs-percussion"
82 clefPosition = #0
83 \override Script #'staff-padding = #0.75
87 \context {
88 \type "Engraver_group_engraver"
89 \name InnerChoirStaff
90 \consists "System_start_delimiter_engraver"
91 systemStartDelimiter = #'SystemStartBracket
92 localKeySignature = #'()
94 \accepts "Staff"
95 \accepts "DrumStaff"
96 \accepts "RhythmicStaff"
97 \accepts "GrandStaff"
98 \accepts "PianoStaff"
99 \accepts "Lyrics"
100 \accepts "ChordNames"
103 \context {
104 \InnerChoirStaffContext
105 \name ChoirStaff
107 \accepts "InnerChoirStaff"
108 \accepts "InnerStaffGroup"
109 \description "Identical to @code{StaffGroup} except that the
110 contained staves are not connected vertically."
115 \context{
116 \type "Engraver_group_engraver"
118 \consists "Output_property_engraver"
120 minimumVerticalExtent = ##f
121 extraVerticalExtent = ##f
122 verticalExtent = ##f
123 localKeySignature = #'()
125 \consists "Pitch_squash_engraver"
126 squashedPosition = #0
127 \consists "Separating_line_group_engraver"
128 \name RhythmicStaff
129 \alias "Staff"
131 \override BarLine #'bar-size = #4
132 \override VoltaBracket #'minimum-space = #15
133 \override VoltaBracket #'padding = #5
134 \override StaffSymbol #'line-count = #1
136 \override Stem #'neutral-direction = #1
137 \override Beam #'neutral-direction = #1
138 % \consists "Repeat_engraver"
139 \consists "Dot_column_engraver"
140 \consists "Volta_engraver"
141 \consists "Bar_engraver"
142 \consists "Time_signature_engraver"
143 \consists "Staff_symbol_engraver"
144 \consists "Instrument_name_engraver"
145 \consistsend "Axis_group_engraver"
146 \accepts "Voice"
147 \description "
148 A context like @code{Staff} but for printing rhythms. Pitches are
149 ignored; the notes are printed on one line.
154 \context {
155 \type "Engraver_group_engraver"
156 \name Voice
158 \description "
159 Corresponds to a voice on a staff. This context handles the
160 conversion of dynamic signs, stems, beams, super- and subscripts,
161 slurs, ties, and rests.
163 You have to instantiate this explicitly if you want to have
164 multiple voices on the same staff."
166 localKeySignature = #'()
167 \consists "Font_size_engraver"
169 \consists "Output_property_engraver"
170 \consists "Arpeggio_engraver"
171 \consists "Multi_measure_rest_engraver"
172 \consists "Text_spanner_engraver"
173 \consists "Grob_pq_engraver"
174 \consists "Forbid_line_break_engraver"
176 \consists "Note_head_line_engraver"
177 \consists "Glissando_engraver"
178 \consists "Ligature_bracket_engraver"
179 \consists "Breathing_sign_engraver"
180 % \consists "Rest_engraver"
181 \consists "Note_heads_engraver"
182 \consists "Rest_engraver"
184 \consists "Stem_engraver"
185 \consists "Beam_engraver"
186 \consists "Grace_beam_engraver"
187 \consists "Auto_beam_engraver"
188 \consists "New_fingering_engraver"
189 \consists "Chord_tremolo_engraver"
190 \consists "Percent_repeat_engraver"
191 \consists "Slash_repeat_engraver"
192 \consists "Melisma_translator"
193 \consists "Part_combine_engraver"
196 Must come before text_engraver, but after note_column engraver.
199 \consists "Text_engraver"
200 \consists "Dynamic_engraver"
201 \consists "Fingering_engraver"
203 \consists "Script_engraver"
204 \consists "Script_column_engraver"
205 \consists "Rhythmic_column_engraver"
206 \consists "Phrasing_slur_engraver"
207 \consists "Cluster_spanner_engraver"
208 \consists "Slur_engraver"
209 \consists "Tie_engraver"
210 \consists "Tuplet_engraver"
212 \consists "Skip_event_swallow_translator"
215 \context {
216 \VoiceContext
217 \name DrumVoice
218 \alias Voice
220 \description "A voice on a percussion staff."
221 \remove "Arpeggio_engraver"
222 \consists "Multi_measure_rest_engraver"
223 \consists "Text_spanner_engraver"
224 \consists "Grob_pq_engraver"
226 \remove "Note_head_line_engraver"
227 \remove "Glissando_engraver"
228 \remove "Ligature_bracket_engraver"
229 \remove "Note_heads_engraver"
230 \consists "Rest_engraver"
231 \consists "Drum_notes_engraver"
232 \remove "New_fingering_engraver"
234 \remove "Fingering_engraver"
236 \remove "Cluster_spanner_engraver"
237 \consists "Tuplet_engraver"
239 \consists "Skip_event_swallow_translator"
242 \context{
243 \type "Engraver_group_engraver"
244 \name GrandStaff
245 localKeySignature = #'()
247 \description " A group of staffs, with a brace on the left
248 side, grouping the staves together. The bar lines of the
249 contained staves are connected vertically. "
251 \consists "Span_bar_engraver"
252 \consists "Span_arpeggio_engraver"
253 \consists "System_start_delimiter_engraver"
254 systemStartDelimiter = #'SystemStartBrace
256 \accepts "Staff"
259 \context{
260 \GrandStaffContext
261 \name "PianoStaff"
262 \alias "GrandStaff"
264 \description
265 "Just like @code{GrandStaff} but with a forced distance between
266 the staves, so cross staff beaming and slurring can be used."
268 verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
269 \override VerticalAlignment #'forced-distance = #12
270 \override VerticalAlignment #'self-alignment-Y = #0
272 \consists "Vertical_align_engraver"
273 \consists "Instrument_name_engraver"
275 instrument = #'()
276 instr = #'()
279 \context {
280 \type "Engraver_group_engraver"
281 \name InnerStaffGroup
282 localKeySignature = #'()
284 \consists "Span_bar_engraver"
285 \consists "Span_arpeggio_engraver"
286 \consists "Output_property_engraver"
287 systemStartDelimiter = #'SystemStartBracket
289 \consists "System_start_delimiter_engraver"
290 \accepts "Staff"
291 \accepts "RhythmicStaff"
292 \accepts "DrumStaff"
293 \accepts "GrandStaff"
294 \accepts "PianoStaff"
295 \accepts "TabStaff"
296 \accepts "Lyrics"
297 \accepts "ChordNames"
300 \context {
301 \InnerStaffGroupContext
302 \name StaffGroup
304 \description
306 "Groups staffs while adding a bracket on the left side, grouping
307 the staves together. The bar lines of the contained staves are
308 connected vertically. "
310 \accepts "InnerChoirStaff"
311 \accepts "ChoirStaff"
312 \accepts "InnerStaffGroup"
313 \accepts "FiguredBass"
317 \context{
318 \type "Engraver_group_engraver"
319 \consistsend "Hara_kiri_engraver"
320 minimumVerticalExtent = #'(-1.2 . 2.4)
321 extraVerticalExtent = ##f
322 verticalExtent = ##f
324 \description " Corresponds to a voice with lyrics. Handles the
325 printing of a single line of lyrics. "
327 \name Lyrics
328 \consists "Separating_line_group_engraver"
329 \consists "Lyric_engraver"
330 \consists "Extender_engraver"
331 \consists "Hyphen_engraver"
332 \consists "Stanza_number_engraver"
333 \consists "Vocal_name_engraver"
334 \consists "Skip_event_swallow_translator"
335 \consists "Font_size_engraver"
336 \override SeparationItem #'padding = #0.2
339 \context {
340 \type "Engraver_group_engraver"
341 \name NoteNames
342 \consistsend "Axis_group_engraver"
344 minimumVerticalExtent = ##f
345 extraVerticalExtent = ##f
346 verticalExtent = ##f
349 \consists "Rest_swallow_translator"
350 \consists "Skip_event_swallow_translator"
351 \consists "Tie_engraver"
352 \consists "Note_name_engraver"
353 \consists "Separating_line_group_engraver"
356 \context {
357 \type "Engraver_group_engraver"
358 \name ChordNames
359 \description "Typesets chord names."
361 \consists "Rest_swallow_translator"
362 \consists "Output_property_engraver"
363 \consists "Separating_line_group_engraver"
364 \consists "Chord_name_engraver"
365 \consists "Skip_event_swallow_translator"
366 \consistsend "Hara_kiri_engraver"
368 minimumVerticalExtent = #'(0 . 2.5)
369 extraVerticalExtent = ##f
370 \override SeparatingGroupSpanner #'padding = #0.8
371 verticalExtent = ##f
375 RemoveEmptyStaffContext= \context {
376 \StaffContext
377 \remove "Axis_group_engraver"
378 \consistsend "Hara_kiri_engraver"
379 \override Beam #'auto-knee-gap = #'()
382 AncientRemoveEmptyStaffContext = \context {
383 %% why not add by default?
385 \RemoveEmptyStaffContext
386 \accepts "VaticanaVoice"
387 \accepts "GregorianTranscriptionVoice"
390 \context {
391 \type Score_engraver
392 \name Score
393 localKeySignature = #'()
395 \description "This is the top level notation context. No
396 other context can contain a @code{Score} context. This context
397 handles the administration of time signatures. It also makes sure
398 that items such as clefs, time signatures, and key-signatures are
399 aligned across staves.
401 You cannot explicitly instantiate a Score context (since it is
402 not contained in any other context). It is instantiated
403 automatically when an output definition (a @code{\score} or
404 @code{\paper} block) is processed."
406 \consists "Repeat_acknowledge_engraver"
407 \consists "Staff_collecting_engraver"
409 % move the alias along with the engraver.
411 \consists "Timing_engraver"
413 \consists "Output_property_engraver"
414 \consists "System_start_delimiter_engraver"
415 \consists "Mark_engraver"
416 \consists "Metronome_mark_engraver"
417 \consists "Break_align_engraver"
418 \consists "Spacing_engraver"
419 \consists "Vertical_align_engraver"
420 \consists "Stanza_number_align_engraver"
421 \consists "Bar_number_engraver"
422 \consists "Span_arpeggio_engraver"
424 \accepts "Staff"
425 \accepts "TabStaff"
426 \accepts "VaticanaStaff"
427 \accepts "GregorianTranscriptionStaff"
428 \accepts "StaffGroup"
429 \accepts "RhythmicStaff"
430 \accepts "DrumStaff"
431 \accepts "Lyrics"
432 \accepts "ChordNames"
433 \accepts "GrandStaff"
434 \accepts "ChoirStaff"
435 \accepts "PianoStaff"
436 \accepts "Devnull"
437 \accepts "NoteNames"
438 \accepts "FiguredBass"
440 soloText = #"Solo"
441 soloIIText = #"Solo II"
442 aDueText = #"a2"
443 soloADue = ##t
444 systemStartDelimiter =#'SystemStartBar
446 drumStyleTable = #drums-style
448 melismaBusyProperties = #default-melisma-properties
450 clefGlyph = #"clefs-G"
451 clefPosition = #-2
452 middleCPosition = #-6
454 defaultBarType = #"|"
455 barNumberVisibility = #default-bar-number-visibility
456 automaticBars = ##t
458 explicitClefVisibility = #all-visible
459 explicitKeySignatureVisibility = #all-visible
460 autoBeamSettings = #default-auto-beam-settings
461 autoBeaming = ##t
462 scriptDefinitions = #default-script-alist
464 verticalAlignmentChildCallback = #Align_interface::alignment_callback
466 pedalSustainStrings = #'("Ped." "*Ped." "*")
467 pedalSustainStyle = #'text
468 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
469 pedalUnaCordaStyle = #'text
471 %% These are in ordinary italic font, including the *,
472 %% but they are unlikely to be used,
473 %% as the default pedal-style for SostenutoPedal is 'mixed':
474 %% i.e. Sost. Ped_____________________
475 pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
476 pedalSostenutoStyle = #'mixed
479 harmonicAccidentals = ##t
480 fingeringOrientations = #'(up down)
481 tupletNumberFormatFunction = #denominator-tuplet-formatter
482 markFormatter = #format-mark-letters
483 rehearsalMark = #1
484 subdivideBeams = ##f
485 allowBeamBreak = ##f
486 extraNatural = ##t
487 autoAccidentals = #'(Staff (same-octave . 0))
488 autoCautionaries = #'()
490 printKeyCancellation = ##t
491 keyAccidentalOrder = #`(
492 (6 . ,FLAT) (2 . ,FLAT) (5 . ,FLAT ) (1 . ,FLAT) (4 . ,FLAT) (0 . ,FLAT) (3 . ,FLAT)
493 (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
494 (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
495 (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
500 this order is more complex, see wansek p254 and further.
502 for instance, order of clef and :|: depends on function of the clef
504 (clef of start-repeat) :|: (change-clef)
506 is the proper order.
510 barCheckSynchronize = ##f
512 %% chord names:
513 chordNameFunction = #ignatzek-chord-names
514 majorSevenSymbol = #whiteTriangleMarkup
515 chordNameSeparator = #(make-simple-markup "/")
516 chordNameExceptions = #ignatzekExceptions
517 chordNoteNamer = #'()
518 chordRootNamer = #note-name->markup
519 chordNameExceptionsFull = #fullJazzExceptions
520 chordNameExceptionsPartial = #partialJazzExceptions
522 %% tablature:
523 stringOneTopmost = ##t
524 highStringOne = ##t
526 %% One may change the strings tuning as following :
527 %% The lenght of the list must be equal to the number of string
528 stringTunings = #guitar-tunings
529 tablatureFormat = #fret-number-tablature-format
532 bassFigureFormatFunction = #format-bass-figure
533 metronomeMarkFormatter = #format-metronome-markup
534 graceSettings = #`#(
535 (Voice Stem direction 1)
536 ;; TODO: should take from existing definition.
537 ;; c&p from define-grobs.scm
539 (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
540 (Voice Stem stem-shorten (0.4 0))
541 (Voice Stem font-size -3)
542 (Voice NoteHead font-size -3)
543 (Voice Dots font-size -3)
544 (Voice Stem beamed-lengths
545 ,(map (lambda (x) (* 0.8 x)) '(3.26)))
546 (Voice Stem beamed-minimum-free-lengths
547 ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
548 (Voice Stem beamed-extreme-minimum-free-lengths
549 ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
551 (Voice Stem no-stem-extend #t)
552 (Voice Beam thickness 0.384)
553 (Voice Beam space-function ,(lambda (beam mult)
554 (* 0.8 (Beam::space_function
555 beam mult))))
556 (Voice Beam position-callbacks (,Beam::least_squares
557 ,Beam::check_concave
558 ,Beam::slope_damping))
559 (Voice Accidental font-size -4)
560 (Voice Slur direction -1)
565 OrchestralScoreContext = \context {
566 \ScoreContext
569 EasyNotation = \context {
570 \ScoreContext
571 \override NoteHead #'print-function = #Note_head::brew_ez_stencil
572 \override NoteHead #'Y-extent-callback = #'()
573 \override NoteHead #'X-extent-callback = #'()
578 \context {
579 \type "Engraver_group_engraver"
580 \name FiguredBass
581 \consists "Figured_bass_engraver"
582 \consists "Rest_swallow_translator"
583 \consists "Note_swallow_translator"
584 \consists "Skip_event_swallow_translator"
585 \consists "Separating_line_group_engraver"
587 \consistsend "Hara_kiri_engraver"
590 \context {
591 \name "Devnull"
592 \type "Engraver_group_engraver"
594 %% don't want to route anything out of here:
595 \alias "Staff"
596 \alias "Voice"
597 \consists "Swallow_engraver"
598 \description "Silently discards all musical information given to this context. "
601 \context {
602 \VoiceContext
603 \name "TabVoice"
604 \consists "Tab_note_heads_engraver"
605 \remove "Note_heads_engraver"
606 \remove "Fingering_engraver"
607 \remove "New_fingering_engraver"
609 \description "Context for drawing notes in a Tab staff. "
610 \override Slur #'font-family = #'roman
611 \override Slur #'print-function = #hammer-print-function
612 \override Slur #'direction = #-1
614 % Draws all stems/beams out of the staff (and not in the middle of the staff !)
615 % This feature is now disabled because most of the tab does not use it.
616 %\override Beam #'damping = #100000
617 %\override Stem #'up-to-staff = ##t
619 % No accidental in tablature !
620 \remove Accidental_engraver
623 \context {
624 \StaffContext
625 \alias "Staff"
626 \name "TabStaff"
627 \denies "Voice"
628 \remove "Staff_symbol_engraver"
629 \consists "Tab_staff_symbol_engraver"
631 \description "Context for generating tablature. [DOCME]"
633 \accepts "TabVoice"
635 % 6 strings
636 \override StaffSymbol #'staff-space = #1.5
638 % Don't draw stems over the tablature figures !
639 \override Stem #'avoid-note-head = ##t
641 % No accidental in tablature !
642 \remove "Accidental_engraver"
643 \remove "Key_engraver"
644 \remove "String_number_engraver"
645 % Special "TAB" clef
646 clefGlyph = #"clefs-tab"
647 clefPosition = #0
650 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
651 % but this does not work (is this a bug or intended behaviour?):
653 % If I try to do so, I get "error: unknown escaped string:
654 % `\VaticanaStaffContext'" in params-init.ly. If I also move
655 % "\context { \Vaticana*Context }" from params-init.ly to the end
656 % of gregorian-init.ly, then I get "error: parse error, unexpected
657 % TRANSLATOR: \context { \VaticanaStaffContext }" in
658 % gregorian-init.ly. --jr
660 \context {
661 \VoiceContext
662 \name "VaticanaVoice"
663 \alias "Voice"
664 \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
666 \remove "Slur_engraver"
667 \remove "Stem_engraver"
668 \remove "Ligature_bracket_engraver"
669 \consists "Vaticana_ligature_engraver"
671 % Set default head for notes outside of \[ \].
672 \override NoteHead #'style = #'vaticana_punctum
674 % Put some space before and after divisiones.
675 % FIXME: This does not seem to show any effect.
676 \override Script #'padding = #0.5
678 % There are no beams in Gregorian Chant notation.
679 autobeaming = ##f
681 % Prepare TextSpanner for \episem{Initium|Finis} use.
682 \override TextSpanner #'style = #'line
683 \override TextSpanner #'edge-height = #'(0 . 0)
684 \override TextSpanner #'padding = #0.5
685 \override TextSpanner #'enclose-bounds = #1
686 \override TextSpanner #'edge-text = #'("" . "")
689 \context {
690 \StaffContext
691 \name "VaticanaStaff"
692 \alias "Staff"
693 \denies "Voice"
694 \accepts "VaticanaVoice"
695 \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
697 \remove "Time_signature_engraver"
698 \consists "Custos_engraver"
700 % We can not remove Bar_engraver; otherwise clefs and custodes will
701 % not show up any more among other line breaking issues.
702 % Instead, we make the grob transparent.
703 \override BarLine #'transparent = ##t
705 \override StaffSymbol #'line-count = #4
706 \override StaffSymbol #'thickness = #0.6
708 % FIXME: unit on StaffSymbol's width should be \linewidth.
709 % \override StaffSymbol #'width = #60.0
711 % Choose vaticana do clef on 3rd line as default.
712 clefGlyph = #"clefs-vaticana_do"
713 middleCPosition = #1
714 clefPosition = #1
715 clefOctavation = #0
717 % Select vaticana style font.
718 \override KeySignature #'style = #'vaticana
719 \override Accidental #'style = #'vaticana
720 \override Custos #'style = #'vaticana
721 \override Custos #'neutral-position = #3
722 \override Custos #'neutral-direction = #-1
724 % Score.timing = ##f
725 % Score.barAlways = ##t
728 \context {
729 \VoiceContext
730 \name "GregorianTranscriptionVoice"
731 \alias "Voice"
733 % Removing ligature bracket engraver without replacing it by some
734 % other ligature engraver would cause a "Junking event: `LigatureEvent'"
735 % warning for every "\[" and "\]". Therefore, we make the grob
736 % transparent instead.
737 \override LigatureBracket #'transparent = ##t
739 % Put some space before and after divisiones.
740 % FIXME: This does not seem to show any effect.
741 \override Script #'padding = #0.5
743 % There are no beams in Gregorian Chant notation.
744 autobeaming = ##f
746 % Prepare TextSpanner for \episem{Initium|Finis} use.
747 \override TextSpanner #'style = #'line
748 \override TextSpanner #'edge-height = #'(0 . 0)
749 \override TextSpanner #'padding = #0.5
750 \override TextSpanner #'enclose-bounds = #1
751 \override TextSpanner #'edge-text = #'("" . "")
753 \context {
754 \StaffContext
755 \name "GregorianTranscriptionStaff"
756 \alias "Staff"
757 \denies "Voice"
758 \accepts "GregorianTranscriptionVoice"
760 % We can not remove Bar_engraver; otherwise clefs and custodes will
761 % not show up any more among other line breaking issues.
762 % Instead, we make the grob transparent.
763 \override BarLine #'transparent = ##t