9 \description "Hard coded entry point for LilyPond. Cannot be tuned."
10 \grobdescriptions #all-grob-descriptions
14 \type "Engraver_group_engraver"
17 \consists "Output_property_engraver"
18 \consists "Bar_engraver"
19 %% Bar_engraver must be first so default bars aren't overwritten
22 \consists "Font_size_engraver"
23 \consists "Volta_engraver"
24 \consists "Separating_line_group_engraver"
25 \consists "Dot_column_engraver"
27 %% perhaps move to Voice context?
28 \consists "Ottava_spanner_engraver"
29 \consists "Clef_engraver"
30 \consists "Key_engraver"
31 \consists "Time_signature_engraver"
32 \consists "Ledger_line_engraver"
33 \consists "Staff_symbol_engraver"
34 \consists "Collision_engraver"
35 \consists "Rest_collision_engraver"
36 \consists "Accidental_engraver"
37 \consists "Piano_pedal_engraver"
38 \consists "Instrument_name_engraver"
39 \consists "String_number_engraver"
40 \consists "Axis_group_engraver"
42 minimumVerticalExtent = #'(-4 . 4)
43 extraVerticalExtent = ##f
45 localKeySignature = #'()
48 %% explicitly set instrument, so we don't get
49 %% weird effects when doing instrument names for
59 \description "Handles clefs, bar lines, keys, accidentals. It can contain
60 @code{Voice} contexts."
66 \type "Engraver_group_engraver"
69 \remove "Accidental_engraver"
70 \remove "Ottava_spanner_engraver"
71 \remove "Key_engraver"
72 \remove "Piano_pedal_engraver"
73 \remove "String_number_engraver"
75 \description "Handles typesetting for percussion."
79 \defaultchild DrumVoice
81 clefGlyph = #"clefs.percussion"
83 \override Script #'staff-padding = #0.75
88 \type "Engraver_group_engraver"
90 \consists "System_start_delimiter_engraver"
91 systemStartDelimiter = #'SystemStartBracket
95 \accepts "RhythmicStaff"
100 \defaultchild "Staff"
107 \defaultchild "Staff"
108 \accepts "InnerChoirStaff"
109 \accepts "InnerStaffGroup"
110 \description "Identical to @code{StaffGroup} except that the
111 contained staves are not connected vertically."
117 \type "Engraver_group_engraver"
119 \consists "Output_property_engraver"
121 minimumVerticalExtent = ##f
122 extraVerticalExtent = ##f
124 localKeySignature = #'()
126 \consists "Pitch_squash_engraver"
127 squashedPosition = #0
128 \consists "Separating_line_group_engraver"
132 \override BarLine #'bar-size = #4
133 \override VoltaBracket #'minimum-space = #15
134 \override VoltaBracket #'padding = #5
135 \override StaffSymbol #'line-count = #1
137 \override Stem #'neutral-direction = #1
138 \override Beam #'neutral-direction = #1
139 %% \consists "Repeat_engraver"
140 \consists "Dot_column_engraver"
141 \consists "Volta_engraver"
142 \consists "Bar_engraver"
143 \consists "Time_signature_engraver"
144 \consists "Staff_symbol_engraver"
145 \consists "Ledger_line_engraver"
146 \consists "Instrument_name_engraver"
147 \consists "Axis_group_engraver"
150 \defaultchild "Voice"
152 A context like @code{Staff} but for printing rhythms. Pitches are
153 ignored; the notes are printed on one line.
159 \type "Engraver_group_engraver"
163 Corresponds to a voice on a staff. This context handles the
164 conversion of dynamic signs, stems, beams, super- and subscripts,
165 slurs, ties, and rests.
167 You have to instantiate this explicitly if you want to have
168 multiple voices on the same staff."
170 localKeySignature = #'()
171 \consists "Font_size_engraver"
173 \consists "Pitched_trill_engraver"
174 \consists "Output_property_engraver"
175 \consists "Arpeggio_engraver"
176 \consists "Multi_measure_rest_engraver"
177 \consists "Text_spanner_engraver"
178 \consists "Trill_spanner_engraver"
179 \consists "Grob_pq_engraver"
180 \consists "Forbid_line_break_engraver"
182 \consists "Note_head_line_engraver"
183 \consists "Glissando_engraver"
184 \consists "Ligature_bracket_engraver"
185 \consists "Breathing_sign_engraver"
186 %% \consists "Rest_engraver"
187 \consists "Note_heads_engraver"
188 \consists "Rest_engraver"
190 \consists "Stem_engraver"
191 \consists "Beam_engraver"
192 \consists "Grace_beam_engraver"
193 \consists "Auto_beam_engraver"
194 \consists "New_fingering_engraver"
195 \consists "Chord_tremolo_engraver"
196 \consists "Percent_repeat_engraver"
197 \consists "Slash_repeat_engraver"
198 \consists "Melisma_translator"
199 \consists "Part_combine_engraver"
201 \consists "Text_engraver"
202 \consists "Dynamic_engraver"
203 \consists "Fingering_engraver"
205 \consists "Script_engraver"
206 \consists "Script_column_engraver"
207 \consists "Rhythmic_column_engraver"
208 \consists "Phrasing_slur_engraver"
209 \consists "Cluster_spanner_engraver"
210 \consists "Slur_engraver"
211 \consists "Tie_engraver"
212 \consists "Tuplet_engraver"
213 \consists "Grace_engraver"
215 \consists "Skip_event_swallow_translator"
224 \override Stem #'lengths = #'(2.5 2.5 3.0 3.0)
232 \description "A voice on a percussion staff."
233 \remove "Arpeggio_engraver"
234 \consists "Multi_measure_rest_engraver"
235 \consists "Text_spanner_engraver"
236 \consists "Grob_pq_engraver"
238 \remove "Note_head_line_engraver"
239 \remove "Glissando_engraver"
240 \remove "Ligature_bracket_engraver"
241 \remove "Note_heads_engraver"
242 \consists "Rest_engraver"
243 \consists "Drum_notes_engraver"
244 \remove "New_fingering_engraver"
246 \remove "Fingering_engraver"
248 \remove "Cluster_spanner_engraver"
249 \consists "Tuplet_engraver"
251 \consists "Skip_event_swallow_translator"
255 \type "Engraver_group_engraver"
257 localKeySignature = #'()
259 \description " A group of staffs, with a brace on the left
260 side, grouping the staves together. The bar lines of the
261 contained staves are connected vertically. "
263 \consists "Span_bar_engraver"
264 \consists "Span_arpeggio_engraver"
265 \consists "System_start_delimiter_engraver"
266 systemStartDelimiter = #'SystemStartBrace
277 "Just like @code{GrandStaff} but with a forced distance between
278 the staves, so cross staff beaming and slurring can be used."
280 verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
281 \override VerticalAlignment #'forced-distance = #12
282 \override VerticalAlignment #'self-alignment-Y = #0
284 \consists "Vertical_align_engraver"
285 \consists "Instrument_name_engraver"
292 \type "Engraver_group_engraver"
293 \name InnerStaffGroup
295 \consists "Span_bar_engraver"
296 \consists "Span_arpeggio_engraver"
297 \consists "Output_property_engraver"
298 systemStartDelimiter = #'SystemStartBracket
300 \consists "System_start_delimiter_engraver"
302 \defaultchild "Staff"
304 \accepts "RhythmicStaff"
306 \accepts "GrandStaff"
307 \accepts "PianoStaff"
310 \accepts "ChordNames"
319 "Groups staffs while adding a bracket on the left side, grouping
320 the staves together. The bar lines of the contained staves are
321 connected vertically. "
323 \accepts "InnerChoirStaff"
324 \accepts "ChoirStaff"
325 \accepts "InnerStaffGroup"
326 \accepts "FiguredBass"
331 \type "Engraver_group_engraver"
332 minimumVerticalExtent = #'(-1.2 . 2.4)
333 extraVerticalExtent = ##f
336 \description " Corresponds to a voice with lyrics. Handles the
337 printing of a single line of lyrics. "
340 \consists "Separating_line_group_engraver"
341 \consists "Lyric_engraver"
342 \consists "Extender_engraver"
343 \consists "Hyphen_engraver"
344 \consists "Stanza_number_engraver"
345 \consists "Vocal_name_engraver"
346 \consists "Skip_event_swallow_translator"
347 \consists "Font_size_engraver"
348 \consists "Hara_kiri_engraver"
349 \override SeparationItem #'padding = #0.2
353 \type "Engraver_group_engraver"
355 \consists "Axis_group_engraver"
357 minimumVerticalExtent = ##f
358 extraVerticalExtent = ##f
362 \consists "Rest_swallow_translator"
363 \consists "Skip_event_swallow_translator"
364 \consists "Tie_engraver"
365 \consists "Note_name_engraver"
366 \consists "Separating_line_group_engraver"
370 \type "Engraver_group_engraver"
372 \description "Typesets chord names."
374 \consists "Volta_engraver"
376 \consists "Rest_swallow_translator"
377 \consists "Output_property_engraver"
378 \consists "Separating_line_group_engraver"
379 \consists "Chord_name_engraver"
380 \consists "Skip_event_swallow_translator"
381 \consists "Hara_kiri_engraver"
383 voltaOnThisStaff = ##f
384 minimumVerticalExtent = #'(0 . 2.5)
385 extraVerticalExtent = ##f
386 \override SeparatingGroupSpanner #'padding = #0.8
391 RemoveEmptyStaffContext= \context {
393 \remove "Axis_group_engraver"
394 \consists "Hara_kiri_engraver"
395 \override Beam #'auto-knee-gap = #'()
398 AncientRemoveEmptyStaffContext = \context {
399 %% why not add by default?
401 \RemoveEmptyStaffContext
402 \accepts "VaticanaVoice"
403 \accepts "GregorianTranscriptionVoice"
404 \accepts "MensuralVoice"
411 \description "This is the top level notation context. No
412 other context can contain a @code{Score} context. This context
413 handles the administration of time signatures. It also makes sure
414 that items such as clefs, time signatures, and key-signatures are
415 aligned across staves.
417 You cannot explicitly instantiate a Score context (since it is
418 not contained in any other context). It is instantiated
419 automatically when an output definition (a @code{\score} or
420 @code{\layout} block) is processed."
422 \consists "Repeat_acknowledge_engraver"
423 \consists "Staff_collecting_engraver"
425 %% move the alias along with the engraver.
427 \consists "Timing_engraver"
429 \consists "Output_property_engraver"
430 \consists "System_start_delimiter_engraver"
431 \consists "Mark_engraver"
432 \consists "Metronome_mark_engraver"
433 \consists "Break_align_engraver"
434 \consists "Spacing_engraver"
435 \consists "Vertical_align_engraver"
436 \consists "Stanza_number_align_engraver"
437 \consists "Bar_number_engraver"
438 \consists "Span_arpeggio_engraver"
440 \defaultchild "Staff"
442 \accepts "RhythmicStaff"
444 \accepts "VaticanaStaff"
445 \accepts "GregorianTranscriptionStaff"
446 \accepts "MensuralStaff"
447 \accepts "StaffGroup"
450 \accepts "ChordNames"
451 \accepts "GrandStaff"
452 \accepts "ChoirStaff"
453 \accepts "PianoStaff"
456 \accepts "FiguredBass"
459 soloIIText = #"Solo II"
461 printPartCombineTexts = ##t
462 systemStartDelimiter =#'SystemStartBar
464 drumStyleTable = #drums-style
466 melismaBusyProperties = #default-melisma-properties
468 clefGlyph = #"clefs.G"
470 middleCPosition = #-6
473 defaultBarType = #"|"
474 barNumberVisibility = #default-bar-number-visibility
477 explicitClefVisibility = #all-visible
478 explicitKeySignatureVisibility = #all-visible
479 autoBeamSettings = #default-auto-beam-settings
481 autoBeamCheck = #default-auto-beam-check
482 scriptDefinitions = #default-script-alist
484 verticalAlignmentChildCallback = #Align_interface::alignment_callback
486 pedalSustainStrings = #'("Ped." "*Ped." "*")
487 pedalSustainStyle = #'text
488 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
489 pedalUnaCordaStyle = #'text
491 %% These are in ordinary italic font, including the *,
492 %% but they are unlikely to be used,
493 %% as the default pedal-style for SostenutoPedal is 'mixed':
494 %% i.e. Sost. Ped_____________________
495 pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
496 pedalSostenutoStyle = #'mixed
499 harmonicAccidentals = ##t
500 fingeringOrientations = #'(up down)
501 stringNumberOrientations = #'(up down)
502 tupletNumberFormatFunction = #denominator-tuplet-formatter
503 markFormatter = #format-mark-letters
508 autoAccidentals = #'(Staff (same-octave . 0))
509 autoCautionaries = #'()
511 printKeyCancellation = ##t
512 keyAccidentalOrder = #`(
513 (6 . ,FLAT) (2 . ,FLAT) (5 . ,FLAT ) (1 . ,FLAT) (4 . ,FLAT) (0 . ,FLAT) (3 . ,FLAT)
514 (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
515 (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
516 (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
519 barCheckSynchronize = ##f
522 chordNameFunction = #ignatzek-chord-names
523 majorSevenSymbol = #whiteTriangleMarkup
524 chordNameSeparator = #(make-simple-markup "/")
525 chordNameExceptions = #ignatzekExceptions
526 chordNoteNamer = #'()
527 chordRootNamer = #note-name->markup
528 chordPrefixSpacer = #0
529 chordNameExceptionsFull = #fullJazzExceptions
530 chordNameExceptionsPartial = #partialJazzExceptions
533 bassStaffProperties = #'((assign clefGlyph "clefs.F")
534 (assign clefPosition 2)
535 (assign middleCPosition 6))
537 stringOneTopmost = ##t
540 %% One may change the strings tuning as following :
541 %% The lenght of the list must be equal to the number of string
542 stringTunings = #guitar-tuning
543 tablatureFormat = #fret-number-tablature-format
546 bassFigureFormatFunction = #format-bass-figure
547 metronomeMarkFormatter = #format-metronome-markup
549 (Voice Stem direction 1)
550 ;; TODO: should take from existing definition.
551 ;; c&p from define-grobs.scm
553 (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
554 (Voice Stem stem-shorten (0.4 0.4))
555 (Voice Stem font-size -3)
556 (Voice NoteHead font-size -3)
557 (Voice Dots font-size -3)
558 (Voice Stem beamed-lengths
559 ,(map (lambda (x) (* 0.8 x)) '(3.3 3.3 4.0)))
560 (Voice Stem beamed-minimum-free-lengths
561 ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
562 (Voice Stem beamed-extreme-minimum-free-lengths
563 ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
565 (Voice Stem no-stem-extend #t)
566 (Voice Beam thickness 0.384)
567 (Voice Beam space-function ,(lambda (beam mult)
568 (* 0.8 (Beam::space_function
570 (Voice Accidental font-size -4)
571 (Voice Slur direction -1)
574 keepAliveInterfaces = #'(rhythmic-grob-interface lyric-interface percent-repeat-interface)
575 quotedEventTypes = #'(note-event rest-event time-scaled-music tie-event)
576 instrumentTransposition = #(ly:make-pitch 0 0 0)
578 verticallySpacedContexts = #'(Staff)
585 \type "Engraver_group_engraver"
588 \consists "Figured_bass_engraver"
589 \consists "Rest_swallow_translator"
590 \consists "Note_swallow_translator"
591 \consists "Skip_event_swallow_translator"
592 \consists "Separating_line_group_engraver"
593 \consists "Hara_kiri_engraver"
598 \type "Engraver_group_engraver"
600 %% don't want to route anything out of here:
603 \consists "Swallow_engraver"
604 \description "Silently discards all musical information given to this context. "
610 \consists "Tab_note_heads_engraver"
611 \remove "Note_heads_engraver"
612 \remove "Fingering_engraver"
613 \remove "New_fingering_engraver"
615 \description "Context for drawing notes in a Tab staff. "
617 %% Draws all stems/beams out of the staff (and not in the middle of the staff !)
618 %% This feature is now disabled because most of the tab does not use it.
619 %%\override Beam #'damping = #100000
620 %%\override Stem #'up-to-staff = ##t
622 %% TabStaff increase the staff-space, which in turn
623 %% increases beam thickness and spacing; beams are
624 %% too big. We have to adjust the beam settings:
625 \override Beam #'thickness = #0.32
626 \override Beam #'space-function =
627 #(lambda (beam mult) (* 0.62 (Beam::space_function beam mult)))
629 %% No accidental in tablature !
630 \remove Accidental_engraver
638 \remove "Staff_symbol_engraver"
639 \consists "Tab_staff_symbol_engraver"
641 \description "Context for generating tablature. [DOCME]"
644 \defaultchild "TabVoice"
647 \override StaffSymbol #'staff-space = #1.5
649 %% Don't draw stems over the tablature figures !
650 \override Stem #'avoid-note-head = ##t
652 %% No accidental in tablature !
653 \remove "Accidental_engraver"
654 \remove "Key_engraver"
655 \remove "String_number_engraver"
656 %% Special "TAB" clef
657 clefGlyph = #"clefs.tab"
661 %% TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
662 %% but this does not work (is this a bug or intended behaviour?):
664 %% If I try to do so, I get "error: unknown escaped string:
665 %% `\VaticanaStaff'" in params-init.ly. If I also move
666 %% "\context { \Vaticana*Context }" from params-init.ly to the end
667 %% of gregorian-init.ly, then I get "error: parse error, unexpected
668 %% TRANSLATOR: \context { \VaticanaStaff }" in
669 %% gregorian-init.ly. --jr
673 \name "VaticanaVoice"
675 \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
677 \remove "Slur_engraver"
678 \remove "Stem_engraver"
679 \remove "Ligature_bracket_engraver"
680 \consists "Vaticana_ligature_engraver"
682 %% Set default head for notes outside of \[ \].
683 \override NoteHead #'style = #'vaticana.punctum
685 %% Put some space before and after divisiones.
686 %% FIXME: This does not seem to show any effect.
687 \override Script #'padding = #0.5
689 %% There are no beams in Gregorian Chant notation.
692 %% Prepare TextSpanner for \episem{Initium|Finis} use.
694 %% N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
695 %% always produce dashed lines, regardless of the style property.
697 %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
698 %% required to force the articulation signs being placed vertically
699 %% tightly to the correpsonding note heads.
701 \override TextSpanner #'dash-fraction = #'()
702 \override TextSpanner #'style = #'line
703 \override TextSpanner #'edge-height = #'(0 . 0)
704 \override TextSpanner #'padding = #-0.1
705 \override TextSpanner #'enclose-bounds = #1
706 \override TextSpanner #'edge-text = #'("" . "")
709 %% FIXME: need something like
710 %% \remove "Bar_number_engraver" (which lives on score level)
711 %% for vaticana and gregorian transcription staves
715 \name "VaticanaStaff"
718 \accepts "VaticanaVoice"
719 \defaultchild "VaticanaVoice"
721 \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
723 \remove "Time_signature_engraver"
724 \consists "Custos_engraver"
726 %% We can not remove Bar_engraver; otherwise clefs and custodes will
727 %% not show up any more among other line breaking issues.
728 %% Instead, we make the grob transparent.
729 \override BarLine #'transparent = ##t
731 \override StaffSymbol #'line-count = #4
732 \override StaffSymbol #'thickness = #0.6
734 %% FIXME: unit on StaffSymbol's width should be \linewidth.
735 %% \override StaffSymbol #'width = #60.0
737 %% Choose vaticana do clef on 3rd line as default.
738 clefGlyph = #"clefs.vaticana.do"
743 %% Select vaticana style font.
744 \override KeySignature #'style = #'vaticana
745 \override Accidental #'style = #'vaticana
746 \override Custos #'style = #'vaticana
747 \override Custos #'neutral-position = #3
748 \override Custos #'neutral-direction = #-1
750 %% Score.timing = ##f
751 %% Score.barAlways = ##t
756 \name "GregorianTranscriptionVoice"
759 %% Removing ligature bracket engraver without replacing it by some
760 %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
761 %% warning for every "\[" and "\]". Therefore, we make the grob
762 %% transparent instead.
763 \override LigatureBracket #'transparent = ##t
765 %% Put some space before and after divisiones.
766 %% FIXME: This does not seem to show any effect.
767 \override Script #'padding = #0.5
769 %% There are no beams in Gregorian Chant notation.
772 %% Prepare TextSpanner for \episem{Initium|Finis} use.
774 %% N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
775 %% always produce dashed lines, regardless of the style property.
777 %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
778 %% required to force the articulation signs being placed vertically
779 %% tightly to the correpsonding note heads.
781 \override TextSpanner #'dash-fraction = #'()
782 \override TextSpanner #'style = #'line
783 \override TextSpanner #'edge-height = #'(0 . 0)
784 \override TextSpanner #'padding = #-0.1
785 \override TextSpanner #'enclose-bounds = #1
786 \override TextSpanner #'edge-text = #'("" . "")
791 \name "GregorianTranscriptionStaff"
794 \accepts "GregorianTranscriptionVoice"
795 \defaultchild "GregorianTranscriptionVoice"
797 %% We can not remove Bar_engraver; otherwise clefs and custodes will
798 %% not show up any more among other line breaking issues.
799 %% Instead, we make the grob transparent.
800 \override BarLine #'transparent = ##t
805 \name "MensuralVoice"
807 \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting a piece in mensural style."
809 \remove "Slur_engraver"
810 \remove "Ligature_bracket_engraver"
811 \consists "Mensural_ligature_engraver"
813 %% Set default head for notes outside of \[ \].
814 \override NoteHead #'style = #'petrucci
816 %% There are no beams in mensural notation.
822 \name "MensuralStaff"
825 \defaultchild "MensuralVoice"
826 \accepts "MensuralVoice"
827 \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting a piece in mensural style."
829 \consists "Custos_engraver"
831 %% We can not remove Bar_engraver; otherwise clefs and custodes will
832 %% not show up any more among other line breaking issues.
833 %% Instead, we make the grob transparent.
834 \override BarLine #'transparent = ##t
836 \override StaffSymbol #'thickness = #0.6
838 %% FIXME: unit on StaffSymbol's width should be \linewidth.
839 %% \override StaffSymbol #'width = #60.0
841 %% Choose petrucci g clef on 2nd line as default.
842 clefGlyph = #"clefs.petrucci.g"
843 middleCPosition = #-6
847 %% Select mensural style font.
848 \override TimeSignature #'style = #'mensural
849 \override KeySignature #'style = #'mensural
850 \override Accidental #'style = #'mensural
851 \override Custos #'style = #'mensural
852 \override Custos #'neutral-position = #3
853 \override Custos #'neutral-direction = #-1
855 %% Score.timing = ##f
856 %% Score.barAlways = ##t
860 RemoveEmptyRhythmicStaffContext= \context {
862 \remove "Axis_group_engraver"
863 \consists "Hara_kiri_engraver"