From: Keith OHara Date: Sun, 27 Jul 2014 19:17:37 +0000 (-0700) Subject: Simplify the NullVoice context, and move it under Score X-Git-Tag: release/2.19.13-1~9 X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=commitdiff_plain;h=fc8c2d680464130af497c386ed5f0033d3fd7470;p=lilypond.git Simplify the NullVoice context, and move it under Score issues 3834 3825 3734 The Tie_performer and similar give their timing information to Lyric_performer without any need for Note_performer. --- diff --git a/Documentation/notation/vocal.itely b/Documentation/notation/vocal.itely index 187e10566f..2a3f89d7ec 100644 --- a/Documentation/notation/vocal.itely +++ b/Documentation/notation/vocal.itely @@ -1682,13 +1682,6 @@ words = \lyricmode { la __ la __ } >> @end lilypond -The @code{NullVoice} context must be placed within a @code{Staff} -context and contain notes that are already being displayed in that staff and that are also in the same octave. Otherwise the -@code{NullVoice} may interact with the printed voices in -unexpected ways. For example, arbitrary notes in the -@code{NullVoice} may cause accidentals to appear (or disappear) on -the staff. - This method also can be used with the @code{\partcombine} function, which does not allow lyrics on its own: @@ -1724,23 +1717,13 @@ aligner = \relative { b'8( c d c) d( d d d) } words = \lyricmode { la __ la __ } \new ChoirStaff << - \new Staff << - \soprano - \new NullVoice = "aligner" \aligner - >> + \new Staff \soprano + \new NullVoice = "aligner" \aligner \new Lyrics \lyricsto "aligner" \words \new Staff \partcombine \altoOne \altoTwo >> @end lilypond -However, note that in the second half of the measure above, the -notes in the @code{NullVoice} context reflect the rhythm of the -lower staff, but they do not deviate from the single pitch being -displayed in the staff to which the @code{NullVoice} belongs. -While not actually required in this particular example, it is a -good idea in general to enter the notes in this way. - - @node Stanzas @subsection Stanzas diff --git a/input/regression/lyric-combine-nullvoice.ly b/input/regression/lyric-combine-nullvoice.ly index 13e7c4f23a..0592dc4e40 100644 --- a/input/regression/lyric-combine-nullvoice.ly +++ b/input/regression/lyric-combine-nullvoice.ly @@ -3,13 +3,13 @@ texidoc ="Lyrics can be aligned to a @code{NullVoice} context, which prints no notes, with the usual mechanisms for melismata." } - +\paper { ragged-right = ##f } \score { << \new Staff << - { c''4. g'8 c''2 | g'4( f' g'2) } \\ + { c''4. g'8 c''2 | g'8( f' g'4)~ g'2 } \\ { c'4 b c'8 e' g' e' | c'1 } \new NullVoice = "nv" { - \autoBeamOff c4 r16 b,16~ b,8 c8[ e8 g8 e8] | g4( f4) g2 } + \autoBeamOff c4 r16 b,8. c8[ e8 g8 e8] | g8( f g4)~ g2 } >> \new Lyrics \lyricsto "nv" { free a -- lign -- ment } >> } diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index e4a39d4fff..620c606349 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -66,10 +66,7 @@ Rest_collision_engraver::process_acknowledged () { Grob *column = g->get_parent (X_AXIS); if (!column) - { - g->warning (_ ("rhythmic head is not part of a rhythmic column")); continue; - } // Only include rests that start now. Include notes that started any time. Paper_column *paper_column = dynamic_cast (column)->get_column (); diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 06248161d6..4c61334d40 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -99,7 +99,6 @@ \defaultchild "Voice" \accepts "Voice" \accepts "CueVoice" - \accepts "NullVoice" \description "Handles clefs, bar lines, keys, accidentals. It can contain @code{Voice} contexts." @@ -578,6 +577,7 @@ automatically when an output definition (a @code{\\score} or \accepts "ChoirStaff" \accepts "PianoStaff" \accepts "Devnull" + \accepts "NullVoice" \accepts "NoteNames" \accepts "FiguredBass" @@ -783,15 +783,6 @@ context." \omit NoteHead \override NoteHead.X-extent = #(lambda (g) (ly:stencil-extent (ly:note-head::print g) X)) - % rhythmic-head-interface needs Rhythmic_column_engraver, which we don't want - \override NoteHead.meta.interfaces = #(delete 'rhythmic-head-interface - (assoc-get 'interfaces - (assoc-get 'meta - (assoc-get 'NoteHead - all-grob-descriptions)))) - %% keep noteheads inside the staff - \consists "Pitch_squash_engraver" - squashedPosition = 0 \omit Accidental \omit AccidentalCautionary diff --git a/ly/performer-init.ly b/ly/performer-init.ly index ecc97aedb7..297a40d2f5 100644 --- a/ly/performer-init.ly +++ b/ly/performer-init.ly @@ -26,7 +26,6 @@ \name Staff \accepts Voice \accepts CueVoice - \accepts NullVoice \defaultchild Voice \consists "Staff_performer" @@ -188,9 +187,6 @@ \alias Staff \alias Voice %% needed for melismata - %% TODO: at least the tie performer likely does not work without the - %% Note_performer, but I don't know how to shut note output off in - %% MIDI. \consists "Tie_performer" \consists "Beam_performer" \consists "Slur_performer" @@ -225,6 +221,7 @@ \accepts TabStaff \accepts StaffGroup \accepts Devnull + \accepts NullVoice \accepts ChoirStaff \accepts RhythmicStaff \accepts ChordNames