]> git.donarmstrong.com Git - lilypond.git/commitdiff
Simplify the NullVoice context, and move it under Score
authorKeith OHara <k-ohara5a5a@oco.net>
Sun, 27 Jul 2014 19:17:37 +0000 (12:17 -0700)
committerKeith OHara <k-ohara5a5a@oco.net>
Fri, 29 Aug 2014 05:10:22 +0000 (22:10 -0700)
issues 3834 3825 3734
The Tie_performer and similar give their timing information to
Lyric_performer without any need for Note_performer.

Documentation/notation/vocal.itely
input/regression/lyric-combine-nullvoice.ly
lily/rest-collision-engraver.cc
ly/engraver-init.ly
ly/performer-init.ly

index 187e10566f2970b358bce44a92f543ae645e25b5..2a3f89d7eccb2c3f6d7ab3d79c1a6ce87d6b1077 100644 (file)
@@ -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
 
index 13e7c4f23a4ab41ecb169dc3349a54477c0debc9..0592dc4e409a1461fd1821b7773ccf963228a656 100644 (file)
@@ -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 }
 >> }
index e4a39d4fff4a5f9715cfacd418acc26964104528..620c60634962aaf5870c371913f3d233288c7b7c 100644 (file)
@@ -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<Item *> (column)->get_column ();
index 06248161d6b3258e93ef47ef38ea76979a78827d..4c61334d4033ff5245816d22e5a9d7978284528e 100644 (file)
@@ -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
index ecc97aedb72d9004dc6fbe0e84b96e6f1ffa95d6..297a40d2f5f867f868c7e4c147163ed91d4c51f6 100644 (file)
@@ -26,7 +26,6 @@
   \name Staff
   \accepts Voice
   \accepts CueVoice
-  \accepts NullVoice
   \defaultchild Voice
 
   \consists "Staff_performer"
   \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"
   \accepts TabStaff
   \accepts StaffGroup
   \accepts Devnull
+  \accepts NullVoice
   \accepts ChoirStaff
   \accepts RhythmicStaff
   \accepts ChordNames