7 \description "Hard coded entry point for LilyPond. Cannot be tuned."
8 \grobdescriptions #all-grob-descriptions
13 % setup for Request->Element conversion. Guru-only
17 \type "Engraver_group_engraver"
21 \consists "Output_property_engraver"
23 \consists "Bar_engraver"
24 % Bar_engraver must be first so default bars aren't overwritten
27 \consists "Font_size_engraver"
29 \consists "Volta_engraver"
30 \consists "Separating_line_group_engraver"
31 \consists "Dot_column_engraver"
33 % perhaps move to Voice context?
34 \consists "Ottava_spanner_engraver"
35 \consists "Clef_engraver"
36 \consists "Key_engraver"
37 \consists "Time_signature_engraver"
38 \consists "Staff_symbol_engraver"
39 \consists "Collision_engraver"
40 \consists "Rest_collision_engraver"
41 \consists "Accidental_engraver"
42 \consists "Piano_pedal_engraver"
43 \consists "Instrument_name_engraver"
44 \consists "String_number_engraver"
45 \consistsend "Axis_group_engraver"
47 minimumVerticalExtent = #'(-6 . 6)
48 extraVerticalExtent = ##f
50 localKeySignature = #'()
52 % explicitly set instrument, so we don't get
53 % weird effects when doing instrument names for
60 \description "Handles clefs, bar lines, keys, accidentals. It can contain
61 @code{Voice} contexts."
67 \type "Engraver_group_engraver"
71 \remove "Accidental_engraver"
72 \remove "Ottava_spanner_engraver"
73 \remove "Key_engraver"
74 \remove "Piano_pedal_engraver"
75 \remove "String_number_engraver"
77 \description "Handles typesetting for percussion."
82 clefGlyph = #"clefs-percussion"
84 \override Script #'staff-padding = #0.75
89 \type "Engraver_group_engraver"
91 \consists "System_start_delimiter_engraver"
92 systemStartDelimiter = #'SystemStartBracket
93 localKeySignature = #'()
97 \accepts "RhythmicStaff"
101 \accepts "ChordNames"
105 \InnerChoirStaffContext
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 \consists "Separating_line_group_engraver"
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"
148 A context like @code{Staff} but for printing rhythms. Pitches are
149 ignored; the notes are printed on one line.
155 \type "Engraver_group_engraver"
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"
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 "Phrasing_slur_engraver"
237 \remove "Cluster_spanner_engraver"
238 \remove "Slur_engraver"
239 \consists "Tuplet_engraver"
241 \consists "Skip_event_swallow_translator"
245 \type "Engraver_group_engraver"
247 localKeySignature = #'()
249 \description " A group of staffs, with a brace on the left
250 side, grouping the staves together. The bar lines of the
251 contained staves are connected vertically. "
253 \consists "Span_bar_engraver"
254 \consists "Span_arpeggio_engraver"
255 \consists "System_start_delimiter_engraver"
256 systemStartDelimiter = #'SystemStartBrace
267 "Just like @code{GrandStaff} but with a forced distance between
268 the staves, so cross staff beaming and slurring can be used."
270 verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
271 \override VerticalAlignment #'forced-distance = #12
272 \override VerticalAlignment #'self-alignment-Y = #0
274 \consists "Vertical_align_engraver"
275 \consists "Instrument_name_engraver"
282 \type "Engraver_group_engraver"
283 \name InnerStaffGroup
284 localKeySignature = #'()
286 \consists "Span_bar_engraver"
287 \consists "Span_arpeggio_engraver"
288 \consists "Output_property_engraver"
289 systemStartDelimiter = #'SystemStartBracket
291 \consists "System_start_delimiter_engraver"
293 \accepts "RhythmicStaff"
295 \accepts "GrandStaff"
296 \accepts "PianoStaff"
299 \accepts "ChordNames"
303 \InnerStaffGroupContext
308 "Groups staffs while adding a bracket on the left side, grouping
309 the staves together. The bar lines of the contained staves are
310 connected vertically. "
312 \accepts "InnerChoirStaff"
313 \accepts "ChoirStaff"
314 \accepts "InnerStaffGroup"
315 \accepts "FiguredBass"
320 \type "Engraver_group_engraver"
321 \consistsend "Hara_kiri_engraver"
322 minimumVerticalExtent = #'(-1.2 . 2.4)
323 extraVerticalExtent = ##f
326 \description " Corresponds to a voice with lyrics. Handles the
327 printing of a single line of lyrics. "
330 \consists "Separating_line_group_engraver"
331 \consists "Lyric_engraver"
332 \consists "Extender_engraver"
333 \consists "Hyphen_engraver"
334 \consists "Stanza_number_engraver"
335 \consists "Vocal_name_engraver"
336 \consists "Skip_event_swallow_translator"
337 \consists "Font_size_engraver"
338 \override SeparationItem #'padding = #0.2
342 \type "Engraver_group_engraver"
344 \consistsend "Axis_group_engraver"
346 minimumVerticalExtent = ##f
347 extraVerticalExtent = ##f
351 \consists "Rest_swallow_translator"
352 \consists "Skip_event_swallow_translator"
353 \consists "Tie_engraver"
354 \consists "Note_name_engraver"
355 \consists "Separating_line_group_engraver"
359 \type "Engraver_group_engraver"
361 \description "Typesets chord names."
363 \consists "Rest_swallow_translator"
364 \consists "Output_property_engraver"
365 \consists "Separating_line_group_engraver"
366 \consists "Chord_name_engraver"
367 \consists "Skip_event_swallow_translator"
368 \consistsend "Hara_kiri_engraver"
370 minimumVerticalExtent = #'(0 . 2.5)
371 extraVerticalExtent = ##f
372 \override SeparatingGroupSpanner #'padding = #0.8
377 RemoveEmptyStaffContext= \translator {
379 \remove "Axis_group_engraver"
380 \consistsend "Hara_kiri_engraver"
381 \override Beam #'auto-knee-gap = #'()
384 AncientRemoveEmptyStaffContext = \translator {
385 %% why not add by default?
387 \RemoveEmptyStaffContext
388 \accepts "VaticanaVoice"
389 \accepts "GregorianTranscriptionVoice"
395 localKeySignature = #'()
397 \description "This is the top level notation context. No
398 other context can contain a @code{Score} context. This context
399 handles the administration of time signatures. It also makes sure
400 that items such as clefs, time signatures, and key-signatures are
401 aligned across staves.
403 You cannot explicitly instantiate a Score context (since it is
404 not contained in any other context). It is instantiated
405 automatically when an output definition (a @code{\score} or
406 @code{\paper} block) is processed."
408 \consists "Repeat_acknowledge_engraver"
409 \consists "Staff_collecting_engraver"
411 % move the alias along with the engraver.
413 %% TODO? add this alias from Timing_engraver::initialize() ?
414 \consists "Timing_engraver"
417 \consists "Output_property_engraver"
418 \consists "System_start_delimiter_engraver"
419 \consists "Mark_engraver"
420 \consists "Metronome_mark_engraver"
421 \consists "Break_align_engraver"
422 \consists "Spacing_engraver"
423 \consists "Vertical_align_engraver"
424 \consists "Stanza_number_align_engraver"
425 \consists "Bar_number_engraver"
426 \consists "Span_arpeggio_engraver"
430 \accepts "VaticanaStaff"
431 \accepts "GregorianTranscriptionStaff"
432 \accepts "StaffGroup"
433 \accepts "RhythmicStaff"
436 \accepts "ChordNames"
437 \accepts "GrandStaff"
438 \accepts "ChoirStaff"
439 \accepts "PianoStaff"
442 \accepts "FiguredBass"
445 soloIIText = #"Solo II"
448 systemStartDelimiter =#'SystemStartBar
450 drumStyleTable = #drums-style
452 melismaBusyProperties = #default-melisma-properties
454 clefGlyph = #"clefs-G"
456 centralCPosition = #-6
458 defaultBarType = #"|"
459 barNumberVisibility = #default-bar-number-visibility
462 explicitClefVisibility = #all-visible
463 explicitKeySignatureVisibility = #all-visible
464 autoBeamSettings = #default-auto-beam-settings
466 scriptDefinitions = #default-script-alist
468 verticalAlignmentChildCallback = #Align_interface::alignment_callback
470 pedalSustainStrings = #'("Ped." "*Ped." "*")
471 pedalSustainStyle = #'text
472 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
473 pedalUnaCordaStyle = #'text
475 %% These are in ordinary italic font, including the *,
476 %% but they are unlikely to be used,
477 %% as the default pedal-style for SostenutoPedal is 'mixed':
478 %% i.e. Sost. Ped_____________________
479 pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
480 pedalSostenutoStyle = #'mixed
482 fingeringOrientations = #'(up down)
483 tupletNumberFormatFunction = #denominator-tuplet-formatter
484 markFormatter = #format-mark-letters
489 autoAccidentals = #'(Staff (same-octave . 0))
490 autoCautionaries = #'()
492 keyAccidentalOrder = #`(
493 (6 . ,FLAT) (2 . ,FLAT) (5 . ,FLAT ) (1 . ,FLAT) (4 . ,FLAT) (0 . ,FLAT) (3 . ,FLAT)
494 (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
495 (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
496 (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
498 breakAlignOrder = #'(
510 barCheckSynchronize = ##f
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
523 stringOneTopmost = ##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 = #make-bass-figure-markup
533 metronomeMarkFormatter = #format-metronome-markup
535 (Voice Stem direction 1)
537 ;; TODO: should take from existing definition.
538 ;; c&p from define-grobs.scm
540 (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
541 (Voice Stem stem-shorten (0.4 0))
542 (Voice Stem font-size -3)
543 (Voice NoteHead font-size -3)
544 (Voice Dots font-size -3)
545 (Voice Stem beamed-lengths
546 ,(map (lambda (x) (* 0.8 x)) '(3.26)))
547 (Voice Stem beamed-minimum-free-lengths
548 ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
549 (Voice Stem beamed-extreme-minimum-free-lengths
550 ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
552 (Voice Stem no-stem-extend #t)
553 (Voice Beam thickness 0.384)
554 (Voice Beam space-function ,(lambda (beam mult)
555 (* 0.8 (Beam::space_function
557 (Voice Beam position-callbacks (,Beam::least_squares
559 ,Beam::slope_damping))
560 (Voice Accidental font-size -4)
561 (Voice Slur direction -1)
566 OrchestralScoreContext = \translator {
570 EasyNotation = \translator {
572 \override NoteHead #'print-function = #Note_head::brew_ez_stencil
573 \override NoteHead #'Y-extent-callback = #'()
574 \override NoteHead #'X-extent-callback = #'()
580 \type "Engraver_group_engraver"
582 \consists "Figured_bass_engraver"
583 \consists "Rest_swallow_translator"
584 \consists "Note_swallow_translator"
585 \consists "Separating_line_group_engraver"
587 \consistsend "Hara_kiri_engraver"
592 \type "Engraver_group_engraver"
594 %% don't want to route anything out of here:
598 \consists "Swallow_engraver"
599 \description "Silently discards all musical information given to this context. "
605 \consists "Tab_note_heads_engraver"
606 \remove "Note_heads_engraver"
607 \remove "Fingering_engraver"
608 \remove "New_fingering_engraver"
610 \description "Context for drawing notes in a Tab staff. "
611 \override Slur #'font-family = #'roman
612 \override Slur #'print-function = #hammer-print-function
613 \override Slur #'direction = #-1
615 % Draws all stems/beams out of the staff (and not in the middle of the staff !)
616 % This feature is now disabled because most of the tab does not use it.
617 %\override Beam #'damping = #100000
618 %\override Stem #'up-to-staff = ##t
620 % No accidental in tablature !
621 \remove Accidental_engraver
629 \remove "Staff_symbol_engraver"
630 \consists "Tab_staff_symbol_engraver"
632 \description "Context for generating tablature. [DOCME]"
637 \override StaffSymbol #'staff-space = #1.5
639 % Don't draw stems over the tablature figures !
640 \override Stem #'avoid-note-head = ##t
642 % No accidental in tablature !
643 \remove "Accidental_engraver"
644 \remove "Key_engraver"
645 \remove "String_number_engraver"
647 clefGlyph = #"clefs-tab"
651 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
652 % but this does not work (is this a bug or intended behaviour?):
654 % If I try to do so, I get "error: unknown escaped string:
655 % `\VaticanaStaffContext'" in params-init.ly. If I also move
656 % "\translator { \Vaticana*Context }" from params-init.ly to the end
657 % of gregorian-init.ly, then I get "error: parse error, unexpected
658 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
659 % gregorian-init.ly. --jr
663 \name "VaticanaVoice"
665 \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
667 \remove "Slur_engraver"
668 \remove "Stem_engraver"
669 \remove "Ligature_bracket_engraver"
670 \consists "Vaticana_ligature_engraver"
672 % Set default head for notes outside of \[ \].
673 \override NoteHead #'style = #'vaticana_punctum
675 % Put some space before and after divisiones.
676 % FIXME: This does not seem to show any effect.
677 \override Script #'padding = #0.5
679 % There are no beams in Gregorian Chant notation.
682 % Prepare TextSpanner for \episem{Initium|Finis} use.
683 \override TextSpanner #'style = #'line
684 \override TextSpanner #'edge-height = #'(0 . 0)
685 \override TextSpanner #'padding = #0.5
686 \override TextSpanner #'enclose-bounds = #1
687 \override TextSpanner #'edge-text = #'("" . "")
692 \name "VaticanaStaff"
695 \accepts "VaticanaVoice"
696 \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
698 \remove "Time_signature_engraver"
699 \consists "Custos_engraver"
701 % We can not remove Bar_engraver; otherwise clefs and custodes will
702 % not show up any more among other line breaking issues.
703 % Instead, we make the grob transparent.
704 \override BarLine #'transparent = ##t
706 \override StaffSymbol #'line-count = #4
707 \override StaffSymbol #'thickness = #0.6
709 % FIXME: unit on StaffSymbol's width should be \linewidth.
710 % \override StaffSymbol #'width = #60.0
712 % Choose vaticana do clef on 3rd line as default.
713 clefGlyph = #"clefs-vaticana_do"
714 centralCPosition = #1
718 % Select vaticana style font.
719 \override KeySignature #'style = #'vaticana
720 \override Accidental #'style = #'vaticana
721 \override Custos #'style = #'vaticana
722 \override Custos #'neutral-position = #3
723 \override Custos #'neutral-direction = #-1
724 \override Custos #'adjust-if-on-staffline = ##t
727 % Score.barAlways = ##t
732 \name "GregorianTranscriptionVoice"
735 % Removing ligature bracket engraver without replacing it by some
736 % other ligature engraver would cause a "Junking event: `LigatureEvent'"
737 % warning for every "\[" and "\]". Therefore, we make the grob
738 % transparent instead.
739 \override LigatureBracket #'transparent = ##t
741 % Put some space before and after divisiones.
742 % FIXME: This does not seem to show any effect.
743 \override Script #'padding = #0.5
745 % There are no beams in Gregorian Chant notation.
748 % Prepare TextSpanner for \episem{Initium|Finis} use.
749 \override TextSpanner #'style = #'line
750 \override TextSpanner #'edge-height = #'(0 . 0)
751 \override TextSpanner #'padding = #0.5
752 \override TextSpanner #'enclose-bounds = #1
753 \override TextSpanner #'edge-text = #'("" . "")
757 \name "GregorianTranscriptionStaff"
760 \accepts "GregorianTranscriptionVoice"
762 % We can not remove Bar_engraver; otherwise clefs and custodes will
763 % not show up any more among other line breaking issues.
764 % Instead, we make the grob transparent.
765 \override BarLine #'transparent = ##t