Index: ly/engraver-init.ly |
diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly |
index 99647c75d03182f2ab159a44d4a86c9264d50149..2d3857646fa73f72e0d490c01d7c82987f3a347f 100644 |
--- a/ly/engraver-init.ly |
+++ b/ly/engraver-init.ly |
@@ -99,6 +99,7 @@ |
\defaultchild "Voice" |
\accepts "Voice" |
\accepts "CueVoice" |
+ \accepts "NullVoice" |
\description "Handles clefs, bar lines, keys, accidentals. It can contain |
@code{Voice} contexts." |
@@ -786,6 +787,59 @@ context." |
} |
\context { |
+ \name "NullVoice" |
+ \type "Engraver_group" |
+ |
+ \description "Non-printing context, typically used for aligning |
+lyrics in polyphonic situations, or with @code{\partcombine}." |
+ |
+ %% don't want to route anything out of here: |
+ \alias "Staff" |
+ \alias "Voice" |
+ |
+ %% all three are needed for ties to work with lyrics |
+ \consists "Note_heads_engraver" |
+ \consists "Rhythmic_column_engraver" |
+ \consists "Tie_engraver" |
+ |
+ %% both are needed for melismas to work with \autoBeamOff |
+ \consists "Beam_engraver" |
+ \consists "Stem_engraver" |
+ |
+ %% needed for slurs to work with lyrics |
+ \consists "Slur_engraver" |
+ |
+ %% keep noteheads inside the staff |
+ \consists "Pitch_squash_engraver" |
+ squashedPosition = 0 |
+ |
+ %% `\omit NoteHead' would give slur attachment errors |
+ \omit Accidental |
+ \omit Beam |
+ \omit Dots |
+ \omit Flag |
+ \omit Rest |
+ \omit Slur |
+ \omit Stem |
+ \omit Tie |
+ |
+ %% let these take up space (for lyric extenders, etc.) |
+ \override NoteHead.transparent = ##t |
+ \override TabNoteHead.transparent = ##t |
+ |
+ %% don't let notes shift |
+ \override NoteHead.X-offset = 0 |
+ \override NoteColumn.ignore-collision = ##t |
+ |
+ %% keep beams and stems inside the staff |
+ \override Beam.positions = #'(1 . 1) |
+ \override Stem.length = 0 |
+ |
+ %% prevent "weird stem size" warnings |
+ \override Stem.direction = #UP |
+} |
+ |
+\context { |
\Voice |
\name "TabVoice" |
\alias "Voice" |