X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fambitus-engraver.cc;h=202e691d21d6515060cad0b0325fecc7af781200;hb=f4a417edbe3d000dbc6a59df982c2f97aa706776;hp=3753249d879f9089069a776453cdc2db4e69f577;hpb=a9d9433bc7b95cb2d4b3d96eefce7a8437c0d44e;p=lilypond.git diff --git a/lily/ambitus-engraver.cc b/lily/ambitus-engraver.cc index 3753249d87..202e691d21 100644 --- a/lily/ambitus-engraver.cc +++ b/lily/ambitus-engraver.cc @@ -28,8 +28,10 @@ class Ambitus_engraver : public Engraver { public: TRANSLATOR_DECLARATIONS (Ambitus_engraver); +protected: + DECLARE_ACKNOWLEDGER (note_head); + void process_music (); - void acknowledge_note_head (Grob_info); void stop_translation_timestep (); virtual void finalize (); virtual void derived_mark () const; @@ -119,9 +121,16 @@ void Ambitus_engraver::acknowledge_note_head (Grob_info info) { Stream_event *nr = info.event_cause (); + SCM p = nr->get_property ("pitch"); + /* + If the engraver is added to a percussion context, + filter out unpitched note heads. + */ + if (!unsmob_pitch (p)) + return; if (nr && nr->in_event_class ("note-event")) { - Pitch pitch = *unsmob_pitch (nr->get_property ("pitch")); + Pitch pitch = *unsmob_pitch (p); Drul_array expands = pitch_interval_.add_point (pitch); if (expands[UP]) causes_[UP] = nr;