1 %%%% This file is part of LilyPond, the GNU music typesetter.
3 %%%% Copyright (C) 1996--2011 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"
34 \description "A context for displaying fret diagrams."
36 \consists "Fretboard_engraver"
37 \consists "Output_property_engraver"
38 \consists "Hara_kiri_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
52 \type "Engraver_group"
55 \consists "Output_property_engraver"
56 \consists "Bar_engraver"
57 %% Bar_engraver must be first so default bars aren't overwritten
60 \consists "Font_size_engraver"
61 \consists "Separating_line_group_engraver"
62 \consists "Dot_column_engraver"
63 \consists "Staff_collecting_engraver"
65 %% perhaps move to Voice context?
66 \consists "Ottava_spanner_engraver"
67 \consists "Clef_engraver"
68 \consists "Key_engraver"
69 \consists "Time_signature_engraver"
70 \consists "Ledger_line_engraver"
71 \consists "Staff_symbol_engraver"
72 \consists "Collision_engraver"
73 \consists "Beam_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"
86 localKeySignature = #'()
88 ignoreFiguredBassRest = ##f
90 %% explicitly set instrument, so we don't get
91 %% weird effects when doing instrument names for
94 shortInstrumentName = #'()
100 \description "Handles clefs, bar lines, keys, accidentals. It can contain
101 @code{Voice} contexts."
107 \type "Engraver_group"
111 \remove "Accidental_engraver"
112 \remove "Ottava_spanner_engraver"
113 \remove "Key_engraver"
114 \remove "Piano_pedal_engraver"
116 \description "Handles typesetting for percussion."
120 \defaultchild "DrumVoice"
122 clefGlyph = #"clefs.percussion"
124 \override Script #'staff-padding = #0.75
129 \type "Engraver_group"
131 \consists "Vertical_align_engraver"
132 topLevelAlignment = ##f
134 \consists "Instrument_name_engraver"
135 \consists "System_start_delimiter_engraver"
136 systemStartDelimiter = #'SystemStartBracket
137 %% explicitly set instrument, so it is not inherited from the parent
138 instrumentName = #'()
139 shortInstrumentName = #'()
141 shortVocalName = #'()
145 \accepts "RhythmicStaff"
146 \accepts "GrandStaff"
147 \accepts "PianoStaff"
149 \accepts "ChordNames"
150 \accepts "FiguredBass"
151 \accepts "ChoirStaff"
152 \accepts "StaffGroup"
153 \defaultchild "Staff"
154 \description "Identical to @code{StaffGroup} except that the
155 contained staves are not connected vertically."
159 \type "Engraver_group"
161 localKeySignature = #'()
164 squashedPosition = #0
168 \override BarLine #'bar-extent = #'(-2 . 2)
169 \override VoltaBracket #'staff-padding = #3
170 \override StaffSymbol #'line-count = #1
172 \override Stem #'neutral-direction = #UP
173 \override Beam #'neutral-direction = #UP
175 \consists "Output_property_engraver"
176 \consists "Font_size_engraver"
177 \consists "Separating_line_group_engraver"
178 \consists "Dot_column_engraver"
179 \consists "Bar_engraver"
180 \consists "Staff_symbol_engraver"
181 \consists "Pitch_squash_engraver"
182 \consists "Time_signature_engraver"
183 \consists "Instrument_name_engraver"
184 \consists "Axis_group_engraver"
185 \consists "Ledger_line_engraver"
187 %% explicitly set instrument, so it is not inherited from the parent
188 instrumentName = #'()
189 shortInstrumentName = #'()
193 \defaultchild "Voice"
195 \description "A context like @code{Staff} but for printing rhythms.
196 Pitches are ignored; the notes are printed on one line."
201 \type "Engraver_group"
204 \description "Corresponds to a voice on a staff. This context
205 handles the conversion of dynamic signs, stems, beams, super- and
206 subscripts, slurs, ties, and rests.
208 You have to instantiate this explicitly if you want to have
209 multiple voices on the same staff."
211 \consists "Font_size_engraver"
213 \consists "Pitched_trill_engraver"
214 \consists "Output_property_engraver"
215 \consists "Arpeggio_engraver"
216 \consists "Multi_measure_rest_engraver"
217 \consists "Text_spanner_engraver"
218 \consists "Trill_spanner_engraver"
219 \consists "Grob_pq_engraver"
220 \consists "Forbid_line_break_engraver"
221 \consists "Laissez_vibrer_engraver"
222 \consists "Repeat_tie_engraver"
223 \consists "Note_head_line_engraver"
224 \consists "Glissando_engraver"
225 \consists "Ligature_bracket_engraver"
226 \consists "Breathing_sign_engraver"
227 \consists "Note_heads_engraver"
228 \consists "Dots_engraver"
229 \consists "Rest_engraver"
230 \consists "Tweak_engraver"
231 \consists "Footnote_engraver"
233 %% switch on to make stem directions interpolate for the
235 % \consists "Melody_engraver"
237 \consists "Stem_engraver"
238 \consists "Beam_engraver"
239 \consists "Grace_beam_engraver"
240 \consists "Auto_beam_engraver"
242 %% must come before Script_column_engraver.
243 \consists "New_fingering_engraver"
245 \consists "Chord_tremolo_engraver"
246 \consists "Double_percent_repeat_engraver"
247 \consists "Percent_repeat_engraver"
248 \consists "Slash_repeat_engraver"
249 \consists "Part_combine_engraver"
251 \consists "Text_engraver"
252 \consists "New_dynamic_engraver"
253 \consists "Dynamic_align_engraver"
254 % \consists "Dynamic_engraver"
255 \consists "Fingering_engraver"
256 \consists "Bend_engraver"
258 \consists "Script_engraver"
259 \consists "Script_column_engraver"
260 \consists "Rhythmic_column_engraver"
261 \consists "Note_spacing_engraver"
262 \consists "Spanner_break_forbid_engraver"
263 \consists "Phrasing_slur_engraver"
264 \consists "Cluster_spanner_engraver"
265 \consists "Slur_engraver"
266 \consists "Tie_engraver"
267 \consists "Tuplet_engraver"
268 \consists "Grace_engraver"
269 \consists "Instrument_switch_engraver"
278 \override Stem #'length-fraction = #(magstep -4)
279 \override Beam #'length-fraction = #(magstep -4)
280 \override Beam #'beam-thickness = #0.35
288 \description "A voice on a percussion staff."
289 \remove "Arpeggio_engraver"
290 \consists "Grob_pq_engraver"
292 \remove "Note_head_line_engraver"
293 \remove "Glissando_engraver"
294 \remove "Ligature_bracket_engraver"
295 \remove "Note_heads_engraver"
296 \consists "Drum_notes_engraver"
297 \remove "New_fingering_engraver"
299 \remove "Fingering_engraver"
301 \remove "Cluster_spanner_engraver"
305 \type "Engraver_group"
307 localKeySignature = #'()
309 \description "A group of staves, with a brace on the left
310 side, grouping the staves together. The bar lines of the
311 contained staves are connected vertically."
313 \consists "Instrument_name_engraver"
314 \consists "Span_bar_engraver"
315 \consists "Span_arpeggio_engraver"
316 \consists "System_start_delimiter_engraver"
317 \consists "Vertical_align_engraver"
318 systemStartDelimiter = #'SystemStartBrace
319 topLevelAlignment = ##f
320 %% explicitly set instrument, so it is not inherited from the parent
321 instrumentName = #'()
322 shortInstrumentName = #'()
324 \defaultchild "Staff"
326 \accepts "RhythmicStaff"
330 \accepts "FiguredBass"
332 \accepts "ChordNames"
340 \description "Just like @code{GrandStaff}, but the staves are only removed
341 together, never separately."
343 \consists "Vertical_align_engraver"
344 \consists "Keep_alive_together_engraver"
345 topLevelAlignment = ##f
347 instrumentName = #'()
348 shortInstrumentName = #'()
352 \type "Engraver_group"
355 \consists "Vertical_align_engraver"
356 topLevelAlignment = ##f
358 \consists "Instrument_name_engraver"
359 \consists "Span_bar_engraver"
360 \consists "Span_arpeggio_engraver"
361 \consists "Output_property_engraver"
362 systemStartDelimiter = #'SystemStartBracket
363 %% explicitly set instrument, so it is not inherited from the parent
364 instrumentName = #'()
365 shortInstrumentName = #'()
367 \consists "System_start_delimiter_engraver"
369 \defaultchild "Staff"
371 \accepts "RhythmicStaff"
373 \accepts "GrandStaff"
374 \accepts "PianoStaff"
377 \accepts "ChordNames"
378 \accepts "FiguredBass"
379 \accepts "ChoirStaff"
380 \accepts "StaffGroup"
382 \description "Groups staves while adding a bracket on the left
383 side, grouping the staves together. The bar lines of the contained
384 staves are connected vertically. @code{StaffGroup} only consists of
385 a collection of staves, with a bracket in front and spanning bar lines."
389 \type "Engraver_group"
392 \consists "Output_property_engraver"
393 \consists "Bar_engraver"
394 \consists "Piano_pedal_engraver"
395 \consists "Script_engraver"
396 \consists "New_dynamic_engraver"
397 \consists "Dynamic_align_engraver"
398 \consists "Text_engraver"
399 \consists "Text_spanner_engraver"
400 \consists "Axis_group_engraver"
401 \consists "Tweak_engraver"
403 pedalSustainStrings = #'("Ped." "*Ped." "*")
404 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
405 \override VerticalAxisGroup #'staff-affinity = #CENTER
406 \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing =
407 #'((basic-distance . 5)
409 \override TextScript #'font-shape = #'italic
410 \override DynamicLineSpanner #'Y-offset = #0
412 \description "Holds a single line of dynamics, which will be
413 centered between the staves surrounding this context."
418 \type "Engraver_group"
420 \description "Corresponds to a voice with lyrics. Handles the
421 printing of a single line of lyrics."
424 instrumentName = #'()
425 shortInstrumentName = #'()
427 \consists "Lyric_engraver"
428 \consists "Extender_engraver"
429 \consists "Hyphen_engraver"
430 \consists "Stanza_number_engraver"
431 \consists "Instrument_name_engraver"
432 \consists "Font_size_engraver"
433 \consists "Hara_kiri_engraver"
434 %% explicitly set instrument, so it is not inherited from the parent
435 instrumentName = #'()
436 shortInstrumentName = #'()
438 \override VerticalAxisGroup #'remove-first = ##t
439 \override VerticalAxisGroup #'remove-empty = ##t
440 \override VerticalAxisGroup #'staff-affinity = #UP
441 \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing =
442 #'((basic-distance . 5.5)
444 (stretchability . 1))
445 \override VerticalAxisGroup #'nonstaff-nonstaff-spacing =
446 #'((basic-distance . 0)
447 (minimum-distance . 2.8)
449 (stretchability . 0))
450 \override VerticalAxisGroup #'nonstaff-unrelatedstaff-spacing #'padding = #1.5
451 \override InstrumentName #'self-alignment-Y = ##f
453 %% sync with define-grobs.scm ;
454 \override InstrumentName #'font-size = #1.0
456 %% make sure that barlines aren't collapsed, when
457 %% Bar_engraver is there.
458 \override BarLine #'bar-extent = #'(-0.05 . 0.05)
463 \type "Engraver_group"
465 \description "A context for printing the names of notes."
466 \consists "Axis_group_engraver"
468 \override VerticalAxisGroup #'staff-affinity = #UP
469 \override VerticalAxisGroup #'nonstaff-nonstaff-spacing =
470 #'((basic-distance . 0)
471 (minimum-distance . 2.8)
473 (stretchability . 0))
474 \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing =
475 #'((basic-distance . 5.5)
477 (stretchability . 1))
478 \override VerticalAxisGroup
479 #'nonstaff-unrelatedstaff-spacing #'padding = 1.5
481 \consists "Tie_engraver"
482 \consists "Note_name_engraver"
483 \consists "Separating_line_group_engraver"
487 \type "Engraver_group"
489 \description "Typesets chord names."
491 \consists "Output_property_engraver"
492 \consists "Separating_line_group_engraver"
493 \consists "Chord_name_engraver"
494 \consists "Hara_kiri_engraver"
495 % \consists "Note_spacing_engraver"
496 \override VerticalAxisGroup #'remove-first = ##t
497 \override VerticalAxisGroup #'remove-empty = ##t
498 \override VerticalAxisGroup #'staff-affinity = #DOWN
499 \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5
500 \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
504 RemoveEmptyStaves = \with {
505 \remove "Axis_group_engraver"
506 % If RemoveEmptyStaves is called twice, two
507 % Hara_kiri_engravers would be added, which leads to a
509 % This code makes sure that no previous Hara_kiri_engraver
510 % is left before adding a new one.
511 \remove "Hara_kiri_engraver"
512 \consists "Hara_kiri_engraver"
513 \override VerticalAxisGroup #'remove-empty = ##t
518 \type "Score_engraver"
521 \description "This is the top level notation context. No
522 other context can contain a @code{Score} context. This context
523 handles the administration of time signatures. It also makes sure
524 that items such as clefs, time signatures, and key-signatures are
525 aligned across staves.
527 You cannot explicitly instantiate a @code{Score} context (since it
528 is not contained in any other context). It is instantiated
529 automatically when an output definition (a @code{\score} or
530 @code{\layout} block) is processed."
532 \consists "Paper_column_engraver"
533 \consists "Repeat_acknowledge_engraver"
534 \consists "Staff_collecting_engraver"
536 %% move the alias along with the engraver.
538 \consists "Timing_translator"
539 \consists "Default_bar_line_engraver"
540 \consists "Output_property_engraver"
541 \consists "System_start_delimiter_engraver"
542 \consists "Mark_engraver"
543 \consists "Volta_engraver"
544 \consists "Metronome_mark_engraver"
545 \consists "Break_align_engraver"
546 \consists "Spacing_engraver"
547 \consists "Grace_spacing_engraver"
548 \consists "Vertical_align_engraver"
549 \consists "Stanza_number_align_engraver"
550 \consists "Bar_number_engraver"
551 \consists "Parenthesis_engraver"
553 \defaultchild "Staff"
555 \accepts "FretBoards"
557 \accepts "RhythmicStaff"
559 \accepts "VaticanaStaff"
560 \accepts "GregorianTranscriptionStaff"
561 \accepts "MensuralStaff"
562 \accepts "StaffGroup"
565 \accepts "ChordNames"
566 \accepts "GrandStaff"
567 \accepts "ChoirStaff"
568 \accepts "PianoStaff"
571 \accepts "FiguredBass"
574 noteToFretFunction = #determine-frets
575 predefinedDiagramTable = ##f
577 soloIIText = #"Solo II"
579 printPartCombineTexts = ##t
580 partCombineTextsOnNote = ##t
581 systemStartDelimiter =#'SystemStartBar
583 drumStyleTable = #drums-style
585 melismaBusyProperties = #default-melisma-properties
587 clefGlyph = #"clefs.G"
589 middleCClefPosition = #-6
590 middleCPosition = #-6
593 crescendoSpanner = #'hairpin
594 decrescendoSpanner = #'hairpin
596 defaultBarType = #"|"
597 doubleRepeatType = #":|:"
598 barNumberVisibility = #first-bar-number-invisible
601 explicitClefVisibility = #all-visible
602 explicitCueClefVisibility = #end-of-line-invisible
603 explicitKeySignatureVisibility = #all-visible
604 implicitTimeSignatureVisibility = #end-of-line-invisible
606 repeatCountVisibility = #all-repeat-counts-visible
608 timeSignatureSettings = #default-time-signature-settings
609 timeSignatureFraction = #'(4 . 4)
611 %% These defaults should be the same as the rules established in
612 %% scm/time-signature-settings.scm for 4/4 time
613 measureLength = #(ly:make-moment 4 4)
614 baseMoment = #(ly:make-moment 1 4)
615 beatStructure = #'(1 1 1 1)
616 beamExceptions = #'((end . (((1 . 8) . (4 4))
617 ((1 . 12) . (3 3 3 3)))))
619 autoBeamCheck = #default-auto-beam-check
621 scriptDefinitions = #default-script-alist
623 pedalSustainStrings = #'("Ped." "*Ped." "*")
624 pedalSustainStyle = #'text
625 pedalUnaCordaStrings = #'("una corda" "" "tre corde")
626 pedalUnaCordaStyle = #'text
628 %% These are in ordinary italic font, including the *,
629 %% but they are unlikely to be used,
630 %% as the default pedal-style for SostenutoPedal is 'mixed':
631 %% i.e. Sost. Ped_____________________
632 pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
633 pedalSostenutoStyle = #'mixed
635 harmonicAccidentals = ##t
636 fingeringOrientations = #'(up down)
637 stringNumberOrientations = #'(up down)
638 strokeFingerOrientations = #'(right)
640 lyricMelismaAlignment = #LEFT
641 markFormatter = #format-mark-letters
645 autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
646 autoCautionaries = #'()
648 printKeyCancellation = ##t
649 keyAlterationOrder = #`(
650 (6 . ,FLAT) (2 . ,FLAT) (5 . ,FLAT ) (1 . ,FLAT) (4 . ,FLAT) (0 . ,FLAT) (3 . ,FLAT)
651 (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
652 (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
653 (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
656 barCheckSynchronize = ##f
659 chordNameFunction = #ignatzek-chord-names
660 majorSevenSymbol = #whiteTriangleMarkup
661 chordNameLowercaseMinor = ##f
662 chordNameSeparator = #(make-simple-markup "/")
663 chordNameExceptions = #ignatzekExceptions
664 chordNoteNamer = #'()
665 chordRootNamer = #note-name->markup
666 chordPrefixSpacer = #0
667 chordNameExceptionsFull = #fullJazzExceptions
668 chordNameExceptionsPartial = #partialJazzExceptions
669 noChordSymbol = #(make-simple-markup "N.C.")
671 bassStaffProperties = #'((assign clefGlyph "clefs.F")
672 (assign clefPosition 2)
673 (assign middleCPosition 6)
674 (assign middleCClefPosition 6))
676 stringOneTopmost = ##t
679 %% One may change the string tunings as follows :
680 %% The length of the list must be equal to the number of strings
681 stringTunings = #guitar-tuning
682 tablatureFormat = #fret-number-tablature-format
683 tabStaffLineLayoutFunction = #tablature-position-on-lines
686 figuredBassFormatter = #format-bass-figure
687 metronomeMarkFormatter = #format-metronome-markup
690 %% See also make-voice-props-set
692 (Voice Stem direction ,UP)
693 (Voice Stem font-size -3)
694 (Voice NoteHead font-size -3)
695 (Voice TabNoteHead font-size -4)
696 (Voice Dots font-size -3)
697 (Voice Stem length-fraction 0.8)
698 (Voice Stem no-stem-extend #t)
699 (Voice Beam beam-thickness 0.384)
700 (Voice Beam length-fraction 0.8)
701 (Voice Accidental font-size -4)
702 (Voice AccidentalCautionary font-size -4)
703 (Voice Slur direction ,DOWN)
704 (Voice Script font-size -3)
705 (Voice Fingering font-size -8)
706 (Voice StringNumber font-size -8)
709 keepAliveInterfaces = #'(
710 bass-figure-interface
712 cluster-beacon-interface
713 fret-diagram-interface
714 lyric-syllable-interface
716 tab-note-head-interface
718 percent-repeat-item-interface
719 percent-repeat-interface
721 ;; need this, as stanza numbers are items, and appear only once.
722 stanza-number-interface
724 % \quoteDuring is supposed to quote everything, cueDuring only the essentials
725 quotedEventTypes = #'(StreamEvent)
726 quotedCueEventTypes = #'(
732 instrumentTransposition = #(ly:make-pitch 0 0 0)
734 topLevelAlignment = ##t
743 \type "Engraver_group"
745 \description "A context for printing a figured bass line."
747 \consists "Figured_bass_engraver"
748 \consists "Separating_line_group_engraver"
749 \consists "Hara_kiri_engraver"
751 \override VerticalAxisGroup #'remove-empty = ##t
752 \override VerticalAxisGroup #'remove-first = ##t
753 \override VerticalAxisGroup #'staff-affinity = #UP
754 \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5
755 \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
760 \type "Engraver_group"
762 %% don't want to route anything out of here:
765 \description "Silently discards all musical information given to this
773 \consists "Tab_note_heads_engraver"
774 \consists "Tab_tie_follow_engraver"
776 \remove "Note_heads_engraver"
777 \remove "Fingering_engraver"
778 \remove "New_fingering_engraver"
780 \description "Context for drawing notes in a Tab staff."
782 %% TabStaff increase the staff-space, which in turn
783 %% increases beam thickness and spacing; beams are
784 %% too big. We have to adjust the beam settings:
785 \override Beam #'beam-thickness = #0.32
786 \override Beam #'length-fraction = #0.62
787 %% the same goes for tremolo beams
788 \override StemTremolo #'beam-thickness = #0.32
789 %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1,
790 %% and the tablature staff space is scaled (1.5 by default),
791 %% so we use the inversion of the scale factor:
792 \override StemTremolo #'length-fraction = #(lambda (grob)
793 (/ 1 (ly:staff-symbol-staff-space grob)))
794 \override StemTremolo #'beam-width = #stem-tremolo::calc-tab-width
796 %% No accidental in tablature !
797 \remove "Accidental_engraver"
798 %% make the Stems as short as possible to minimize their influence
799 %% on the slur::calc-control-points routine
800 \override Stem #'length = #0
801 \override Stem #'no-stem-extend = ##t
802 \override Stem #'flag-style = #'no-flag
803 \override Stem #'details = #'((lengths 0 0 0 0 0 0)
804 (beamed-lengths 0 0 0)
805 (beamed-minimum-free-lengths 0 0 0)
806 (beamed-extreme-minimum-free-lengths 0 0)
808 %% after all, the stubs of the stems may still be visible, so ...
809 \override Stem #'transparent = ##t
810 %% automatic beams should be suppressed for similar reasons ...
812 %% remove beams, dots and rests ...
813 \override Beam #'stencil = ##f
814 \override StemTremolo #'stencil = ##f
815 \override Dots #'stencil = ##f
816 \override Rest #'stencil = ##f
817 \override MultiMeasureRest #'stencil = ##f
818 \override MultiMeasureRestNumber #'transparent = ##t
819 \override MultiMeasureRestText #'transparent = ##t
820 %% ... all kinds of ties/slurs
821 \override Tie #'stencil = ##f
822 \override RepeatTie #'stencil = ##f
823 \override LaissezVibrerTie #'stencil = ##f
824 \override Slur #'stencil = #slur::draw-tab-slur
825 \override PhrasingSlur #'stencil = ##f
826 %% 'tied to' fret numbers become invisible or parenthesized, respectively)
827 \override Tie #'after-line-breaking = #tie::handle-tab-note-head
828 \override RepeatTie #'after-line-breaking = #repeat-tie::handle-tab-note-head
829 %% ... and all kinds of markups, spanners etc.
830 \override TupletBracket #'stencil = ##f
831 \override TupletNumber #'stencil = ##f
832 \override DynamicText #'transparent = ##t
833 \override DynamicTextSpanner #'stencil = ##f
834 \override TextSpanner #'stencil = ##f
835 \override Hairpin #'transparent = ##t
836 \override Script #'stencil = ##f
837 \override TextScript #'stencil = ##f
838 \override Glissando #'stencil = #glissando::draw-tab-glissando
839 %% the direction for glissando lines will be automatically corrected
840 \override Glissando #'extra-dy = #glissando::calc-tab-extra-dy
841 \override Glissando #'bound-details #'right = #`((attach-dir . ,LEFT)
843 \override Glissando #'bound-details #'left = #`((attach-dir . ,RIGHT)
846 \override TabNoteHead #'glyph-name = #tab-note-head::calc-glyph-name
847 \override TabNoteHead #'stencil = #tab-note-head::whiteout-if-style-set
855 \consists "Tab_staff_symbol_engraver"
857 \description "Context for generating tablature. It accepts only @code{TabVoice}
858 contexts and handles the line spacing, the tablature clef etc. properly."
861 \defaultchild "TabVoice"
863 %% 6 strings, bigger spacing
864 \override StaffSymbol #'staff-space = #1.5
866 %% Don't draw stems over the tablature figures !
867 \override Stem #'avoid-note-head = ##t
869 %% No accidental in tablature !
870 \remove "Accidental_engraver"
871 \remove "Key_engraver"
873 \remove "Ottava_spanner_engraver"
875 \override Clef #'stencil = #clef::print-modern-tab-if-set
877 \override TimeSignature #'stencil = ##f
879 \override Arpeggio #'stencil = ##f
880 %% we ignore collision warnings that may occur due to
881 %% stem overlapping, because we have no stems ;-)
882 \override NoteColumn #'ignore-collision = ##t
883 %% Special "TAB" clef
884 clefGlyph = #"clefs.tab"
886 %% Change string if note results in negative fret number
887 handleNegativeFrets = #'recalculate
892 \name "VaticanaVoice"
894 \description "Same as @code{Voice} context, except that it is
895 accommodated for typesetting Gregorian Chant in the notational style
898 \remove "Slur_engraver"
899 \remove "Stem_engraver"
900 \remove "Ligature_bracket_engraver"
901 \consists "Vaticana_ligature_engraver"
902 \remove "Text_spanner_engraver"
903 \consists "Episema_engraver"
905 %% Set default head for notes outside of \[ \].
906 \override NoteHead #'style = #'vaticana.punctum
908 %% Put some space before and after divisiones.
909 %% FIXME: This does not seem to show any effect.
910 \override Script #'padding = #0.5
912 %% There are no beams in Gregorian Chant notation.
918 \name "VaticanaStaff"
921 \accepts "VaticanaVoice"
922 \defaultchild "VaticanaVoice"
924 \description "Same as @code{Staff} context, except that it is
925 accommodated for typesetting Gregorian Chant in the notational style
928 \remove "Time_signature_engraver"
929 \consists "Custos_engraver"
931 %% We can not remove Bar_engraver; otherwise clefs and custodes will
932 %% not show up any more among other line breaking issues.
933 %% Instead, we make the grob transparent.
934 \override BarLine #'transparent = ##t
936 \override StaffSymbol #'line-count = #4
937 \override StaffSymbol #'thickness = #0.6
939 %% FIXME: unit on StaffSymbol's width should be \linewidth.
940 %% \override StaffSymbol #'width = #60.0
942 %% Choose vaticana do clef on 3rd line as default.
943 clefGlyph = #"clefs.vaticana.do"
945 middleCClefPosition = #1
949 %% Select vaticana style font.
950 \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
951 \override Accidental #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
952 \override Custos #'style = #'vaticana
953 \override Custos #'neutral-position = #3
954 \override Custos #'neutral-direction = #DOWN
955 \override Dots #'style = #'vaticana
960 \name "GregorianTranscriptionVoice"
962 \consists "Episema_engraver"
964 %% Removing ligature bracket engraver without replacing it by some
965 %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
966 %% warning for every "\[" and "\]". Therefore, we make the grob
967 %% transparent instead.
968 \override LigatureBracket #'transparent = ##t
970 %% Put some space before and after divisiones.
971 %% FIXME: This does not seem to show any effect.
972 \override Script #'padding = #0.5
974 %% There are no beams in Gregorian Chant notation.
981 \name "GregorianTranscriptionStaff"
984 \accepts "GregorianTranscriptionVoice"
985 \defaultchild "GregorianTranscriptionVoice"
987 %% We can not remove Bar_engraver; otherwise clefs and custodes will
988 %% not show up any more among other line breaking issues.
989 %% Instead, we make the grob transparent.
990 \override BarLine #'transparent = ##t
995 \name "MensuralVoice"
997 \description "Same as @code{Voice} context, except that it is
998 accommodated for typesetting a piece in mensural style."
1000 \remove "Slur_engraver"
1001 \remove "Ligature_bracket_engraver"
1002 \consists "Mensural_ligature_engraver"
1004 %% Set default head for notes outside of \[ \].
1005 \override NoteHead #'style = #'mensural
1006 \override Rest #'style = #'mensural
1008 %% There are no beams in mensural notation.
1014 \name "MensuralStaff"
1017 \defaultchild "MensuralVoice"
1018 \accepts "MensuralVoice"
1019 \description "Same as @code{Staff} context, except that it is
1020 accommodated for typesetting a piece in mensural style."
1022 \consists "Custos_engraver"
1024 %% We can not remove Bar_engraver; otherwise clefs and custodes will
1025 %% not show up any more among other line breaking issues.
1026 %% Instead, we make the grob transparent.
1027 \override BarLine #'transparent = ##t
1029 \override StaffSymbol #'thickness = #0.6
1031 %% FIXME: unit on StaffSymbol's width should be \linewidth.
1032 %% \override StaffSymbol #'width = #60.0
1034 %% Choose mensural g clef on 2nd line as default.
1035 clefGlyph = #"clefs.mensural.g"
1036 middleCClefPosition = #-6
1037 middleCPosition = #-6
1041 %% Select mensural style font.
1042 \override TimeSignature #'style = #'mensural
1043 \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist
1044 \override Accidental #'glyph-name-alist = #alteration-mensural-glyph-name-alist
1045 \override Custos #'style = #'mensural
1046 \override Custos #'neutral-position = #3
1047 \override Custos #'neutral-direction = #DOWN
1049 %% Accidentals are valid only once (same as
1050 %% #(set-accidental-style 'forget))
1052 autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
1053 autoCautionaries = #'()
1054 printKeyCancellation = ##f
1058 %% Keep the old definitions in here for compatibility (they erase previous
1059 %% settings to the corresponding context!).
1060 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
1061 %% into the desired context. That's just as easy, requires only one line more
1062 %% (the \*Staff), but preserves previous context mods.
1063 %% TODO: DEPRECATED_2.13.17, remove at some point in the future
1064 RemoveEmptyStaffContext = \context {
1069 AncientRemoveEmptyStaffContext = \context {
1074 RemoveEmptyDrumStaffContext = \context {
1079 RemoveEmptyRhythmicStaffContext = \context {
1084 RemoveEmptyTabStaffContext = \context {