1 %%%% This file is part of LilyPond, the GNU music typesetter.
3 %%%% Copyright (C) 1996--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
4 %%%% Jan Nieuwenhuizen <janneke@gnu.org>
6 %%%% LilyPond is free software: you can redistribute it and/or modify
7 %%%% it under the terms of the GNU General Public License as published by
8 %%%% the Free Software Foundation, either version 3 of the License, or
9 %%%% (at your option) any later version.
11 %%%% LilyPond is distributed in the hope that it will be useful,
12 %%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
13 %%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 %%%% GNU General Public License for more details.
16 %%%% You should have received a copy of the GNU General Public License
17 %%%% along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
27 \description "Hard coded entry point for LilyPond. Cannot be tuned."
28 \grobdescriptions #all-grob-descriptions
32 \type "Engraver_group"
35 \description "A context for displaying fret diagrams."
37 \consists "Fretboard_engraver"
38 \consists "Axis_group_engraver"
39 \consists "Separating_line_group_engraver"
40 \consists "Font_size_engraver"
41 \consists "Instrument_name_engraver"
43 %% explicitly set instrument, so it is not inherited from the parent
45 shortInstrumentName = #'()
47 predefinedDiagramTable = #default-fret-table
48 handleNegativeFrets = #'recalculate
49 restrainOpenStrings = ##f
53 \type "Engraver_group"
56 \consists "Bar_engraver"
57 \consists "Pure_from_neighbor_engraver"
58 %% Bar_engraver must be first so default bars aren't overwritten
61 \consists "Font_size_engraver"
62 \consists "Separating_line_group_engraver"
63 \consists "Dot_column_engraver"
64 \consists "Staff_collecting_engraver"
66 %% perhaps move to Voice context?
67 \consists "Ottava_spanner_engraver"
68 \consists "Clef_engraver"
69 \consists "Key_engraver"
70 \consists "Time_signature_engraver"
71 \consists "Ledger_line_engraver"
72 \consists "Staff_symbol_engraver"
73 \consists "Collision_engraver"
74 \consists "Grob_pq_engraver"
75 \consists "Rest_collision_engraver"
76 \consists "Accidental_engraver"
77 \consists "Piano_pedal_engraver"
78 \consists "Piano_pedal_align_engraver"
79 \consists "Instrument_name_engraver"
80 \consists "Axis_group_engraver"
81 \consists "Figured_bass_engraver"
82 \consists "Figured_bass_position_engraver"
83 \consists "Script_row_engraver"
84 \consists "Cue_clef_engraver"
85 \consists "Fingering_column_engraver"
87 localAlterations = #'()
89 ignoreFiguredBassRest = ##f
91 %% explicitly set instrument, so we don't get
92 %% weird effects when doing instrument names for
95 shortInstrumentName = #'()
102 \description "Handles clefs, bar lines, keys, accidentals. It can contain
103 @code{Voice} contexts."
109 \type "Engraver_group"
113 \remove "Accidental_engraver"
114 \remove "Ottava_spanner_engraver"
115 \remove "Key_engraver"
116 \remove "Piano_pedal_engraver"
118 \description "Handles typesetting for percussion."
122 \defaultchild "DrumVoice"
124 clefGlyph = #"clefs.percussion"
126 \override Script.staff-padding = #0.75
131 \type "Engraver_group"
133 \consists "Vertical_align_engraver"
134 topLevelAlignment = ##f
135 localAlterations = #'()
137 \consists "Instrument_name_engraver"
138 \consists "System_start_delimiter_engraver"
139 systemStartDelimiter = #'SystemStartBracket
140 %% explicitly set instrument, so it is not inherited from the parent
141 instrumentName = #'()
142 shortInstrumentName = #'()
144 shortVocalName = #'()
146 \accepts "ChoirStaff"
147 \accepts "ChordNames"
150 \accepts "FiguredBass"
151 \accepts "GrandStaff"
154 \accepts "PianoStaff"
155 \accepts "RhythmicStaff"
157 \accepts "StaffGroup"
158 \defaultchild "Staff"
159 \description "Identical to @code{StaffGroup} except that the
160 contained staves are not connected vertically."
164 \type "Engraver_group"
166 localAlterations = #'()
169 squashedPosition = #0
170 \name "RhythmicStaff"
173 \override VoltaBracket.staff-padding = #3
174 \override StaffSymbol.line-count = #1
176 \override Stem.neutral-direction = #UP
177 \override Beam.neutral-direction = #UP
179 \consists "Font_size_engraver"
180 \consists "Separating_line_group_engraver"
181 \consists "Dot_column_engraver"
182 \consists "Bar_engraver"
183 \consists "Staff_symbol_engraver"
184 \consists "Pitch_squash_engraver"
185 \consists "Time_signature_engraver"
186 \consists "Instrument_name_engraver"
187 \consists "Axis_group_engraver"
188 \consists "Ledger_line_engraver"
190 %% explicitly set instrument, so it is not inherited from the parent
191 instrumentName = #'()
192 shortInstrumentName = #'()
197 \defaultchild "Voice"
199 \description "A context like @code{Staff} but for printing rhythms.
200 Pitches are ignored; the notes are printed on one line."
205 \type "Engraver_group"
208 \description "Corresponds to a voice on a staff. This context
209 handles the conversion of dynamic signs, stems, beams, super- and
210 subscripts, slurs, ties, and rests.
212 You have to instantiate this explicitly if you want to have
213 multiple voices on the same staff."
214 %% Grace_engraver sets properties, it must come first.
215 \consists "Grace_engraver"
216 \consists "Font_size_engraver"
218 \consists "Pitched_trill_engraver"
219 \consists "Arpeggio_engraver"
220 \consists "Multi_measure_rest_engraver"
221 \consists "Text_spanner_engraver"
222 \consists "Trill_spanner_engraver"
223 \consists "Grob_pq_engraver"
224 \consists "Forbid_line_break_engraver"
225 \consists "Laissez_vibrer_engraver"
226 \consists "Repeat_tie_engraver"
227 \consists "Note_head_line_engraver"
228 \consists "Glissando_engraver"
229 \consists "Ligature_bracket_engraver"
230 \consists "Breathing_sign_engraver"
231 \consists "Note_heads_engraver"
232 \consists "Dots_engraver"
233 \consists "Rest_engraver"
235 %% switch on to make stem directions interpolate for the
237 % \consists "Melody_engraver"
239 \consists "Stem_engraver"
240 \consists "Beam_engraver"
241 \consists "Grace_beam_engraver"
242 \consists "Auto_beam_engraver"
243 \consists "Grace_auto_beam_engraver"
245 %% must come before Script_column_engraver.
246 \consists "New_fingering_engraver"
248 \consists "Chord_tremolo_engraver"
249 \consists "Double_percent_repeat_engraver"
250 \consists "Percent_repeat_engraver"
251 \consists "Slash_repeat_engraver"
252 \consists "Part_combine_engraver"
254 \consists "Text_engraver"
255 \consists "Dynamic_engraver"
256 \consists "Dynamic_align_engraver"
257 \consists "Fingering_engraver"
258 \consists "Bend_engraver"
260 \consists "Script_engraver"
261 \consists "Script_column_engraver"
262 \consists "Rhythmic_column_engraver"
263 \consists "Note_spacing_engraver"
264 \consists "Spanner_break_forbid_engraver"
265 \consists "Phrasing_slur_engraver"
266 \consists "Cluster_spanner_engraver"
267 \consists "Slur_engraver"
268 \consists "Tie_engraver"
269 \consists "Tuplet_engraver"
270 \consists "Instrument_switch_engraver"
279 \override NoteHead.ignore-ambitus = ##t
280 \override Stem.length-fraction = #(magstep -4)
281 \override Beam.length-fraction = #(magstep -4)
282 \override Beam.beam-thickness = #0.35
290 \description "A voice on a percussion staff."
291 \remove "Arpeggio_engraver"
292 \consists "Grob_pq_engraver"
294 \remove "Note_head_line_engraver"
295 \remove "Glissando_engraver"
296 \remove "Ligature_bracket_engraver"
297 \remove "Note_heads_engraver"
298 \consists "Drum_notes_engraver"
299 \remove "New_fingering_engraver"
301 \remove "Fingering_engraver"
303 \remove "Cluster_spanner_engraver"
307 \type "Engraver_group"
309 localAlterations = #'()
311 \description "A group of staves, with a brace on the left
312 side, grouping the staves together. The bar lines of the
313 contained staves are connected vertically."
315 \consists "Instrument_name_engraver"
316 \consists "Span_bar_engraver"
317 %% The default for DynamicText.extra-spacing-width causes dynamics to
318 %% be placed across span bars, so switch it off:
319 \override DynamicText.extra-spacing-width = ##f
320 \consists "Span_bar_stub_engraver"
321 \consists "Span_arpeggio_engraver"
322 \consists "System_start_delimiter_engraver"
323 \consists "Vertical_align_engraver"
324 systemStartDelimiter = #'SystemStartBrace
325 topLevelAlignment = ##f
326 %% explicitly set instrument, so it is not inherited from the parent
327 instrumentName = #'()
328 shortInstrumentName = #'()
330 \defaultchild "Staff"
331 \accepts "ChordNames"
334 \accepts "FiguredBass"
336 \accepts "RhythmicStaff"
346 \description "Just like @code{GrandStaff}, but the staves are only removed
347 together, never separately."
349 \consists "Vertical_align_engraver"
350 \consists "Keep_alive_together_engraver"
351 topLevelAlignment = ##f
353 instrumentName = #'()
354 shortInstrumentName = #'()
358 \type "Engraver_group"
361 \consists "Vertical_align_engraver"
362 topLevelAlignment = ##f
364 \consists "Instrument_name_engraver"
365 \consists "Span_bar_engraver"
366 %% The default for DynamicText.extra-spacing-width causes dynamics to
367 %% be placed across span bars, so switch it off:
368 \override DynamicText.extra-spacing-width = ##f
369 \consists "Span_bar_stub_engraver"
370 \consists "Span_arpeggio_engraver"
371 systemStartDelimiter = #'SystemStartBracket
372 %% explicitly set instrument, so it is not inherited from the parent
373 instrumentName = #'()
374 shortInstrumentName = #'()
376 \consists "System_start_delimiter_engraver"
378 \defaultchild "Staff"
379 \accepts "ChoirStaff"
380 \accepts "ChordNames"
382 \accepts "FiguredBass"
383 \accepts "FretBoards"
384 \accepts "GrandStaff"
387 \accepts "PianoStaff"
388 \accepts "RhythmicStaff"
390 \accepts "StaffGroup"
393 \description "Groups staves while adding a bracket on the left
394 side, grouping the staves together. The bar lines of the contained
395 staves are connected vertically. @code{StaffGroup} only consists of
396 a collection of staves, with a bracket in front and spanning bar lines."
400 \type "Engraver_group"
402 \accepts "ChordNames"
405 \accepts "FiguredBass"
406 \accepts "FretBoards"
407 \accepts "GregorianTranscriptionStaff"
408 \accepts "KievanStaff"
410 \accepts "MensuralStaff"
412 \accepts "PetrucciStaff"
413 \accepts "RhythmicStaff"
416 \accepts "VaticanaStaff"
417 \defaultchild "Staff"
418 \consists "Axis_group_engraver"
420 \description "Provides a common axis for the contained staves,
421 making all of them appear in the same vertical space. This can be
422 useful for typesetting staves of different types in immediate succession
423 or for temporarily changing the character of one staff or overlaying
424 it with a different one. Often used with @code{\\stopStaff} and
425 @code{\\startStaff} for best results."
429 \type "Engraver_group"
432 \consists "Bar_engraver"
433 \consists "Piano_pedal_engraver"
434 \consists "Script_engraver"
435 \consists "Dynamic_engraver"
436 \consists "Dynamic_align_engraver"
437 \consists "Text_engraver"
438 \consists "Text_spanner_engraver"
439 \consists "Font_size_engraver"
440 \consists "Axis_group_engraver"
442 pedalSustainStrings = #'("Ped." "*Ped." "*")
443 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
444 \override VerticalAxisGroup.staff-affinity = #CENTER
445 \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
446 #'((basic-distance . 5)
448 \override TextScript.font-shape = #'italic
449 \override DynamicLineSpanner.Y-offset = #0
450 \override DynamicLineSpanner.outside-staff-priority = ##f
451 \override DynamicText.outside-staff-priority = ##f
452 \override Hairpin.outside-staff-priority = ##f
454 \description "Holds a single line of dynamics, which will be
455 centered between the staves surrounding this context."
460 \type "Engraver_group"
462 \description "Corresponds to a voice with lyrics. Handles the
463 printing of a single line of lyrics."
466 \consists "Lyric_engraver"
467 \consists "Extender_engraver"
468 \consists "Hyphen_engraver"
469 \consists "Stanza_number_engraver"
470 \consists "Instrument_name_engraver"
471 \consists "Font_size_engraver"
472 \consists "Axis_group_engraver"
473 \consists "Pure_from_neighbor_engraver"
475 %% explicitly set instrument, so it is not inherited from the parent
476 instrumentName = #'()
477 shortInstrumentName = #'()
479 \override VerticalAxisGroup.remove-first = ##t
480 \override VerticalAxisGroup.remove-empty = ##t
481 \override VerticalAxisGroup.staff-affinity = #UP
482 \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
483 #'((basic-distance . 5.5)
485 (stretchability . 1))
486 \override VerticalAxisGroup.nonstaff-nonstaff-spacing =
487 #'((basic-distance . 0)
488 (minimum-distance . 2.8)
490 (stretchability . 0))
491 \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing.padding = #1.5
492 \override InstrumentName.self-alignment-Y = ##f
494 %% sync with define-grobs.scm ;
495 \override InstrumentName.font-size = #1.0
497 %% make sure that barlines aren't collapsed, when
498 %% Bar_engraver is there.
499 \override BarLine.bar-extent = #'(-0.05 . 0.05)
504 \type "Engraver_group"
506 \description "A context for printing the names of notes."
507 \consists "Axis_group_engraver"
509 \override VerticalAxisGroup.staff-affinity = #UP
510 \override VerticalAxisGroup.nonstaff-nonstaff-spacing =
511 #'((basic-distance . 0)
512 (minimum-distance . 2.8)
514 (stretchability . 0))
515 \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
516 #'((basic-distance . 5.5)
518 (stretchability . 1))
519 \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing.padding = 1.5
521 \consists "Tie_engraver"
522 \consists "Note_name_engraver"
523 \consists "Separating_line_group_engraver"
527 \type "Engraver_group"
529 \alias Staff % Catch Staff-level overrides like
530 % \key, \transposition
531 \description "Typesets chord names."
533 \consists "Separating_line_group_engraver"
534 \consists "Chord_name_engraver"
535 \consists "Axis_group_engraver"
536 %\consists "Note_spacing_engraver"
538 \override VerticalAxisGroup.remove-first = ##t
539 \override VerticalAxisGroup.remove-empty = ##t
540 \override VerticalAxisGroup.staff-affinity = #DOWN
541 \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
542 \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
543 \override ParenthesesItem.font-size = #1.5
547 \type "Score_engraver"
550 \description "This is the top level notation context. No
551 other context can contain a @code{Score} context. This context
552 handles the administration of time signatures. It also makes sure
553 that items such as clefs, time signatures, and key-signatures are
554 aligned across staves.
556 You cannot explicitly instantiate a @code{Score} context (since it
557 is not contained in any other context). It is instantiated
558 automatically when an output definition (a @code{\\score} or
559 @code{\\layout} block) is processed."
561 \consists "Paper_column_engraver"
562 \consists "Repeat_acknowledge_engraver"
563 \consists "Staff_collecting_engraver"
567 %% An alias for Timing is established by the Timing_translator in
568 %% whatever context it is initialized, and the timing variables are
569 %% then copied from wherever Timing had been previously established.
570 %% The alias at Score level provides a target for initializing
571 %% Timing variables in layout definitions before any
572 %% Timing_translator has been run.
574 %% timing translator must come BEFORE bar number engraver
575 \consists "Timing_translator"
576 \consists "Default_bar_line_engraver"
577 \consists "Output_property_engraver"
578 \consists "Tweak_engraver"
579 \consists "System_start_delimiter_engraver"
580 \consists "Mark_engraver"
581 \consists "Volta_engraver"
582 \consists "Metronome_mark_engraver"
583 \consists "Break_align_engraver"
584 \consists "Spacing_engraver"
585 \consists "Grace_spacing_engraver"
586 \consists "Vertical_align_engraver"
587 \consists "Stanza_number_align_engraver"
588 \consists "Bar_number_engraver"
589 \consists "Parenthesis_engraver"
590 \consists "Concurrent_hairpin_engraver"
591 \consists "Beam_collision_engraver"
592 \consists "Footnote_engraver"
594 \defaultchild "Staff"
596 \accepts "ChoirStaff"
597 \accepts "ChordNames"
601 \accepts "FiguredBass"
602 \accepts "FretBoards"
603 \accepts "GrandStaff"
604 \accepts "GregorianTranscriptionStaff"
605 \accepts "KievanStaff"
607 \accepts "MensuralStaff"
610 \accepts "PetrucciStaff"
611 \accepts "PianoStaff"
612 \accepts "RhythmicStaff"
614 \accepts "StaffGroup"
616 \accepts "VaticanaStaff"
618 noteToFretFunction = #determine-frets
619 predefinedDiagramTable = ##f
621 soloIIText = #"Solo II"
623 printPartCombineTexts = ##t
624 partCombineTextsOnNote = ##t
625 systemStartDelimiter =#'SystemStartBar
627 drumStyleTable = #drums-style
629 associatedVoiceType = #'Voice
630 melismaBusyProperties = #default-melisma-properties
632 clefGlyph = #"clefs.G"
634 middleCClefPosition = #-6
635 middleCPosition = #-6
638 crescendoSpanner = #'hairpin
639 decrescendoSpanner = #'hairpin
641 defaultBarType = #"|"
642 doubleRepeatType = #":..:"
643 startRepeatType = #".|:"
644 endRepeatType = #":|."
645 alternativeRestores = #'(measurePosition measureLength lastChord)
646 barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers
647 barNumberFormatter = #robust-bar-number-function
648 clefTranspositionFormatter = #clef-transposition-markup
649 cueClefTranspositionFormatter = #clef-transposition-markup
652 explicitClefVisibility = #all-visible
653 explicitCueClefVisibility = #end-of-line-invisible
654 explicitKeySignatureVisibility = #all-visible
655 initialTimeSignatureVisibility = #end-of-line-invisible
657 repeatCountVisibility = #all-repeat-counts-visible
659 %% Other Timing variables are derived and set by the Timing_translator
660 %% at initialization time by calling the functions in
661 %% scm/time-signature-settings.scm
663 timeSignatureSettings = #default-time-signature-settings
664 timeSignatureFraction = 4/4
666 beamHalfMeasure = ##t
669 autoBeamCheck = #default-auto-beam-check
671 completionFactor = #unity-if-multimeasure
673 scriptDefinitions = #default-script-alist
675 pedalSustainStrings = #'("Ped." "*Ped." "*")
676 pedalSustainStyle = #'text
677 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
678 pedalUnaCordaStyle = #'text
680 %% These are in ordinary italic font, including the *,
681 %% but they are unlikely to be used,
682 %% as the default pedal-style for SostenutoPedal is 'mixed':
683 %% i.e. Sost. Ped_____________________
684 pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
685 pedalSostenutoStyle = #'mixed
687 harmonicAccidentals = ##t
688 fingeringOrientations = #'(up down)
689 stringNumberOrientations = #'(up down)
690 strokeFingerOrientations = #'(right)
692 lyricMelismaAlignment = #LEFT
693 markFormatter = #format-mark-letters
697 autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
698 autoCautionaries = #'()
700 printKeyCancellation = ##t
701 keyAlterationOrder = #`(
702 (6 . ,FLAT) (2 . ,FLAT) (5 . ,FLAT ) (1 . ,FLAT) (4 . ,FLAT) (0 . ,FLAT) (3 . ,FLAT)
703 (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
704 (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
705 (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
708 barCheckSynchronize = ##f
711 chordNameFunction = #ignatzek-chord-names
712 minorChordModifier = #(make-simple-markup "m")
713 additionalPitchPrefix = #"" % was "add"
714 majorSevenSymbol = #whiteTriangleMarkup
715 chordNameLowercaseMinor = ##f
716 chordNameSeparator = #(make-hspace-markup 0.5)
717 slashChordSeparator = #(make-simple-markup "/")
718 chordNameExceptions = #ignatzekExceptions
719 chordNoteNamer = #'()
720 chordRootNamer = #note-name->markup
721 chordPrefixSpacer = #0
722 chordNameExceptionsFull = #fullJazzExceptions
723 chordNameExceptionsPartial = #partialJazzExceptions
724 noChordSymbol = #(make-simple-markup "N.C.")
727 stringOneTopmost = ##t
730 %% One may change the string tunings as follows :
731 %% The length of the list must be equal to the number of strings
732 stringTunings = #guitar-tuning
733 tablatureFormat = #fret-number-tablature-format
734 tabStaffLineLayoutFunction = #tablature-position-on-lines
737 figuredBassFormatter = #format-bass-figure
738 metronomeMarkFormatter = #format-metronome-markup
740 %% See also make-voice-props-set
741 graceSettings = #score-grace-settings
743 keepAliveInterfaces = #'(
744 bass-figure-interface
746 cluster-beacon-interface
747 fret-diagram-interface
748 lyric-syllable-interface
750 tab-note-head-interface
752 percent-repeat-item-interface
753 percent-repeat-interface
755 ;; need this, as stanza numbers are items, and appear only once.
756 stanza-number-interface
758 %% \quoteDuring is supposed to quote everything, cueDuring only the essentials
759 quotedEventTypes = #'(StreamEvent)
760 quotedCueEventTypes = #'(
766 instrumentTransposition = #(ly:make-pitch 0 0 0)
768 topLevelAlignment = ##t
777 \type "Engraver_group"
779 \description "A context for printing a figured bass line."
781 \consists "Figured_bass_engraver"
782 \consists "Separating_line_group_engraver"
783 \consists "Axis_group_engraver"
785 \override VerticalAxisGroup.remove-empty = ##t
786 \override VerticalAxisGroup.remove-first = ##t
787 \override VerticalAxisGroup.staff-affinity = #UP
788 \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #0.5
789 \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
794 \type "Engraver_group"
796 %% don't want to route anything out of here:
799 \description "Silently discards all musical information given to this
805 \type "Engraver_group"
806 \description "For aligning lyrics without printing notes"
808 %% don't route anything out of here
812 %% provide non-printing NoteHeads with proper extents for lyric alignment
813 \consists "Note_heads_engraver"
815 \override NoteHead.X-extent = #(lambda (g)
816 (ly:stencil-extent (ly:note-head::print g) X))
818 %% generate no accidentals
819 nullAccidentals = ##t
821 %% keep noteheads inside the staff
822 \consists "Pitch_squash_engraver"
825 %% generate no ledger lines, needed for staves with custom
826 %% line positions and ledger lines that appear inside the staff
827 \override NoteHead.no-ledgers = ##t
829 %% the engravers that control the 'busy' flags for note-onsets and melismata
830 \consists "Grob_pq_engraver"
831 \consists "Tie_engraver"
833 \consists "Beam_engraver"
835 \consists "Slur_engraver"
843 \consists "Tab_note_heads_engraver"
844 \consists "Tab_tie_follow_engraver"
846 \remove "Note_heads_engraver"
847 \remove "Fingering_engraver"
848 \remove "New_fingering_engraver"
849 \remove "Pitched_trill_engraver"
851 \description "Context for drawing notes in a Tab staff."
853 %% No accidental in tablature !
854 \remove "Accidental_engraver"
862 \consists "Tab_staff_symbol_engraver"
864 \description "Context for generating tablature. It accepts only @code{TabVoice}
865 contexts and handles the line spacing, the tablature clef etc. properly."
868 \defaultchild "TabVoice"
870 %% 6 strings, bigger spacing
871 \override StaffSymbol.staff-space = #1.5
873 %% Don't draw stems over the tablature figures !
874 \override Stem.avoid-note-head = ##t
876 %% No accidental in tablature !
877 \remove "Accidental_engraver"
878 \remove "Key_engraver"
880 \remove "Ottava_spanner_engraver"
882 \override Clef.stencil = #clef::print-modern-tab-if-set
884 \override TimeSignature.stencil = ##f
886 \override Arpeggio.stencil = ##f
887 %% we ignore collision warnings that may occur due to
888 %% stem overlapping, because we have no stems ;-)
889 \override NoteColumn.ignore-collision = ##t
890 %% Special "TAB" clef
891 clefGlyph = #"clefs.tab"
893 %% Change string if note results in negative fret number
894 handleNegativeFrets = #'recalculate
895 %% Allow open strings even if minimumFret is set
896 restrainOpenStrings = ##f
898 %% TabStaff increase the staff-space, which in turn
899 %% increases beam thickness and spacing; beams are
900 %% too big. We have to adjust the beam settings:
901 \override Beam.beam-thickness = #0.32
902 \override Beam.length-fraction = #0.62
903 %% the same goes for tremolo beams
904 \override StemTremolo.beam-thickness = #0.32
905 %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
906 %% and the tablature staff space is scaled (1.5 by default),
907 %% so we use the inversion of the scale factor:
908 \override StemTremolo.length-fraction = #(lambda (grob)
909 (/ 1 (ly:staff-symbol-staff-space grob)))
910 \override StemTremolo.beam-width = #stem-tremolo::calc-tab-width
912 %% make the Stems as short as possible to minimize their influence
913 %% on the slur::calc-control-points routine
914 \override Stem.no-stem-extend = ##t
915 \override Flag.style = #'no-flag
916 \override Stem.details = #'((lengths 0 0 0 0 0 0)
917 (beamed-lengths 0 0 0)
918 (beamed-minimum-free-lengths 0 0 0)
919 (beamed-extreme-minimum-free-lengths 0 0)
921 %% after all, the stubs of the stems may still be visible, so ...
922 \override Stem.stencil = ##f
923 \override Flag.stencil = ##f
924 %% automatic beams should be suppressed for similar reasons ...
926 %% remove beams, dots and rests ...
927 \override Beam.stencil = ##f
928 \override StemTremolo.stencil = ##f
929 \override Dots.stencil = ##f
930 \override Rest.stencil = ##f
931 \override MultiMeasureRest.stencil = ##f
932 \override MultiMeasureRestNumber.stencil = ##f
933 \override MultiMeasureRestText.stencil = ##f
934 %% ... all kinds of ties/slurs
935 \override Tie.stencil = ##f
936 \override RepeatTie.stencil = ##f
937 \override LaissezVibrerTie.stencil = ##f
938 \override Slur.stencil = #slur::draw-tab-slur
939 \override PhrasingSlur.stencil = ##f
940 %% 'tied to' fret numbers become invisible or parenthesized, respectively)
941 \override Tie.after-line-breaking = #tie::handle-tab-note-head
942 \override RepeatTie.after-line-breaking = #repeat-tie::handle-tab-note-head
943 %% ... and all kinds of markups, spanners etc.
944 \override TupletBracket.stencil = ##f
945 \override TupletNumber.stencil = ##f
946 \override DynamicText.stencil = ##f
947 \override DynamicTextSpanner.stencil = ##f
948 \override TextSpanner.stencil = ##f
949 \override Hairpin.stencil = ##f
950 \override Script.stencil = ##f
951 \override TextScript.stencil = ##f
952 \override Glissando.stencil = #glissando::draw-tab-glissando
953 %% the direction for glissando lines will be automatically corrected
954 \override Glissando.extra-dy = #glissando::calc-tab-extra-dy
955 \override Glissando.bound-details.right = #`((attach-dir . ,LEFT)
957 \override Glissando.bound-details.left = #`((attach-dir . ,RIGHT)
960 \override TabNoteHead.glyph-name = #tab-note-head::calc-glyph-name
961 \override TabNoteHead.stencil = #tab-note-head::whiteout-if-style-set
966 \name "VaticanaVoice"
968 \description "Same as @code{Voice} context, except that it is
969 accommodated for typesetting Gregorian Chant in the notational style
972 \remove "Slur_engraver"
973 \remove "Stem_engraver"
974 \remove "Ligature_bracket_engraver"
975 \consists "Vaticana_ligature_engraver"
976 \remove "Text_spanner_engraver"
977 \consists "Episema_engraver"
979 %% Set default head for notes outside of \[ \].
980 \override NoteHead.style = #'vaticana.punctum
982 %% Put some space before and after divisiones.
983 %% FIXME: This does not seem to show any effect.
984 \override Script.padding = #0.5
986 %% There are no beams in Gregorian Chant notation.
992 \name "VaticanaStaff"
995 \accepts "VaticanaVoice"
996 \defaultchild "VaticanaVoice"
998 \description "Same as @code{Staff} context, except that it is
999 accommodated for typesetting Gregorian Chant in the notational style
1000 of Editio Vaticana."
1002 \remove "Time_signature_engraver"
1003 \consists "Custos_engraver"
1005 %% We can not remove Bar_engraver; otherwise clefs and custodes will
1006 %% not show up any more among other line breaking issues.
1007 %% Instead, we make the grob transparent.
1008 \override BarLine.transparent = ##t
1010 \override StaffSymbol.line-count = #4
1011 \override StaffSymbol.thickness = #0.6
1013 %% FIXME: unit on StaffSymbol's width should be \linewidth.
1014 %% \override StaffSymbol.width = #60.0
1016 %% Choose vaticana do clef on 3rd line as default.
1017 clefGlyph = #"clefs.vaticana.do"
1018 middleCPosition = #1
1019 middleCClefPosition = #1
1021 clefTransposition = #0
1023 %% Select vaticana style font.
1024 \override KeySignature.glyph-name-alist = #alteration-vaticana-glyph-name-alist
1025 \override Accidental.glyph-name-alist = #alteration-vaticana-glyph-name-alist
1026 \override Custos.style = #'vaticana
1027 \override Custos.neutral-position = #3
1028 \override Custos.neutral-direction = #DOWN
1029 \override Dots.style = #'vaticana
1034 \name "GregorianTranscriptionVoice"
1036 \consists "Episema_engraver"
1038 %% Removing ligature bracket engraver without replacing it by some
1039 %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
1040 %% warning for every "\[" and "\]". Therefore, we make the grob
1041 %% transparent instead.
1042 \override LigatureBracket.transparent = ##t
1044 %% Put some space before and after divisiones.
1045 %% FIXME: This does not seem to show any effect.
1046 \override Script.padding = #0.5
1048 %% There are no beams in Gregorian Chant notation.
1054 \name "GregorianTranscriptionStaff"
1057 \accepts "GregorianTranscriptionVoice"
1058 \defaultchild "GregorianTranscriptionVoice"
1060 %% We can not remove Bar_engraver; otherwise clefs and custodes will
1061 %% not show up any more among other line breaking issues.
1062 %% Instead, we make the grob transparent.
1063 \override BarLine.transparent = ##t
1068 \name "MensuralVoice"
1070 \description "Same as @code{Voice} context, except that it is
1071 accommodated for typesetting a piece in mensural style."
1073 \remove "Slur_engraver"
1074 \remove "Ligature_bracket_engraver"
1075 \consists "Mensural_ligature_engraver"
1077 %% Set default head for notes outside of \[ \].
1078 \override NoteHead.style = #'mensural
1079 \override Rest.style = #'mensural
1080 \override Flag.style = #'mensural
1082 %% There are no beams in mensural notation.
1088 \name "MensuralStaff"
1091 \defaultchild "MensuralVoice"
1092 \accepts "MensuralVoice"
1093 \description "Same as @code{Staff} context, except that it is
1094 accommodated for typesetting a piece in mensural style."
1096 \consists "Custos_engraver"
1098 %% We can not remove Bar_engraver; otherwise clefs and custodes will
1099 %% not show up any more among other line breaking issues.
1100 %% Instead, we make the grob transparent.
1101 \override BarLine.transparent = ##t
1103 \override StaffSymbol.thickness = #0.6
1105 %% FIXME: unit on StaffSymbol's width should be \linewidth.
1106 %% \override StaffSymbol.width = #60.0
1108 %% Choose mensural g clef on 2nd line as default.
1109 clefGlyph = #"clefs.mensural.g"
1110 middleCClefPosition = #-6
1111 middleCPosition = #-6
1113 clefTransposition = #0
1115 %% Select mensural style font.
1116 \override TimeSignature.style = #'mensural
1117 \override KeySignature.glyph-name-alist = #alteration-mensural-glyph-name-alist
1118 \override Accidental.glyph-name-alist = #alteration-mensural-glyph-name-alist
1119 \override AccidentalSuggestion.glyph-name-alist = #alteration-mensural-glyph-name-alist
1120 \override Custos.style = #'mensural
1121 \override Custos.neutral-position = #3
1122 \override Custos.neutral-direction = #DOWN
1124 %% Accidentals are valid only once (same as
1125 %% \accidentalStyle forget)
1127 autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1128 autoCautionaries = #'()
1129 printKeyCancellation = ##f
1134 \name "PetrucciVoice"
1136 \description "Same as @code{Voice} context, except that it is
1137 accommodated for typesetting a piece in Petrucci style."
1139 \remove "Ligature_bracket_engraver"
1140 \consists "Mensural_ligature_engraver"
1142 %% Set glyph styles.
1143 \override NoteHead.style = #'petrucci
1144 \override Rest.style = #'mensural
1146 %% Thickens and shortens stems.
1147 \override Stem.thickness = #1.7
1148 \override Stem.length = #5
1150 %% There are no beams in Petrucci notation.
1156 \name "PetrucciStaff"
1159 \defaultchild "PetrucciVoice"
1160 \accepts "PetrucciVoice"
1161 \description "Same as @code{Staff} context, except that it is
1162 accommodated for typesetting a piece in Petrucci style."
1164 \consists "Custos_engraver"
1166 \override StaffSymbol.thickness = #1.3
1168 %% Choose Petrucci g clef on 2nd line as default.
1169 clefGlyph = #"clefs.petrucci.g"
1170 middleCClefPosition = #-6
1171 middleCPosition = #-6
1173 clefTransposition = #0
1175 \override Custos.style = #'mensural
1176 \override Custos.neutral-position = #3
1177 \override Custos.neutral-direction = #DOWN
1179 %% Accidentals are valid only once (if the following note is different)
1181 autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1182 ,neo-modern-accidental-rule)
1183 autoCautionaries = #'()
1184 printKeyCancellation = ##f
1191 \description "Same as @code{Voice} context, except that it is
1192 accommodated for typesetting a piece in Kievan style."
1194 \remove "Ligature_bracket_engraver"
1195 \consists "Kievan_ligature_engraver"
1197 %% Set glyph styles.
1198 \override NoteHead.style = #'kievan
1199 \override Stem.X-offset = #stem::kievan-offset-callback
1200 \override Stem.stencil = ##f
1201 \override Flag.stencil = ##f
1202 \override Rest.style = #'mensural
1203 \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
1204 \override Dots.style = #'kievan
1205 \override Slur.stencil = ##f
1206 \override Stem.length = #0.0
1207 \override Beam.positions = #beam::get-kievan-positions
1208 \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
1209 \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
1211 %% There are beams in Kievan notation, but they are invoked manually
1220 \defaultchild "KievanVoice"
1221 \accepts "KievanVoice"
1222 \description "Same as @code{Staff} context, except that it is
1223 accommodated for typesetting a piece in Kievan style."
1225 \remove "Time_signature_engraver"
1227 %% Choose Kievan tsefaut clef
1228 clefGlyph = #"clefs.kievan.do"
1229 middleCClefPosition = #0
1230 middleCPosition = #0
1232 clefTransposition = #0
1234 %% Accidentals are valid only once (if the following note is different)
1236 autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
1237 ,neo-modern-accidental-rule)
1238 autoCautionaries = #'()
1239 printKeyCancellation = ##f
1243 %% Keep the old definitions in here for compatibility (they erase previous
1244 %% settings to the corresponding context!).
1245 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1246 %% into the desired context. That's just as easy, requires only one line more
1247 %% (the \*Staff), but preserves previous context mods.
1248 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1249 RemoveEmptyStaffContext = \context {
1254 AncientRemoveEmptyStaffContext = \context {
1259 RemoveEmptyDrumStaffContext = \context {
1264 RemoveEmptyRhythmicStaffContext = \context {
1269 RemoveEmptyTabStaffContext = \context {