source file of the GNU LilyPond music typesetter
- (c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "musical-request.hh"
{
}
-void
-Melodic_req::transpose (Pitch delta)
-{
- Pitch p = *unsmob_pitch (get_mus_property ("pitch"));
-
- p.transpose (delta);
-
- if (abs (p.alteration_i_) > 2)
- {
- warning (_f ("Transposition by %s makes accidental larger than two",
- delta.str ()));
- }
-
- set_mus_property ("pitch", p.smobbed_copy ());
-}
-
bool
Melodic_req::do_equal_b (Request const* r) const
{
return rh; // ; && !compare (*this, *rh);
}
-
-
Moment
Rhythmic_req::length_mom () const
{
- return unsmob_duration (get_mus_property ("duration"))->length_mom ();
-
+ Duration *d = unsmob_duration (get_mus_property ("duration"));
+ if (!d){
+ Moment m ;
+ programming_error("Rhythmic_req has no duration");
+ return m;
+ }
+ return d->length_mom ();
}
void
Rhythmic_req::compress (Moment m)
{
Duration *d = unsmob_duration (get_mus_property ("duration"));
-
- set_mus_property ("duration", d ->compressed (m.main_part_).smobbed_copy ());
+ if (d)
+ set_mus_property ("duration", d ->compressed (m.main_part_).smobbed_copy ());
}
bool
Articulation_req const* a = dynamic_cast<Articulation_req const*> (r);
return a && gh_equal_p (get_mus_property ("articulation-type"),
- r->get_mus_property ("articulation-type"));
+ r->get_mus_property ("articulation-type"))
+ && get_direction () == a->get_direction ();
}
-
-
-