Modified 2001-2002 by Rune Zedeler <rz@daimi.au.dk>
*/
-#include "musical-request.hh"
-#include "command-request.hh"
+#include "event.hh"
+
#include "item.hh"
#include "tie.hh"
#include "rhythmic-head.hh"
struct Accidental_entry {
bool done_;
- Note_req * melodic_;
+ Music * melodic_;
Grob * accidental_;
Translator_group *origin_;
Grob* head_;
*/
static int
-number_accidentals (SCM sig, Note_req * note, Pitch *pitch, SCM curbarnum, SCM lazyness,
+number_accidentals (SCM sig, Music * note, Pitch *pitch, SCM curbarnum, SCM lazyness,
bool ignore_octave_b)
{
int n = pitch->notename_;
int p = gh_number_p (prev_acc) ? gh_scm2int (prev_acc) : 0;
int num;
- if (a == p
- && !to_boolean (note->get_mus_property ("force-accidental"))
- && gh_number_p (prev_acc))
+ if (a == p && gh_number_p (prev_acc))
num = 0;
else if ( (abs (a)<abs (p) || p*a<0) && a != 0 )
num = 2;
}
static int
-number_accidentals (Note_req * note, Pitch *pitch, Translator_group * origin,
+number_accidentals (Music * note, Pitch *pitch, Translator_group * origin,
SCM accidentals, SCM curbarnum)
{
int number = 0;
SCM barnum = get_property ("currentBarNumber");
SCM smp = get_property("measurePosition");
Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
- if(mp<0 && gh_number_p(barnum)) barnum = scm_int2num(gh_scm2int(barnum)-1);
+ if(mp.main_part_<Rational(0) && gh_number_p(barnum)) barnum = scm_int2num(gh_scm2int(barnum)-1);
bool extra_natural_b = get_property ("extraNatural") == SCM_BOOL_T;
for (int i = 0; i < accidentals_.size (); i++)
{
continue;
accidentals_[i].done_ = true;
Grob * support = accidentals_[i].head_;
- Note_req * note = accidentals_[i].melodic_;
+ Music * note = accidentals_[i].melodic_;
Translator_group * origin = accidentals_[i].origin_;
Pitch * pitch = unsmob_pitch (note->get_mus_property ("pitch"));
num = num_caut;
cautionary = true;
}
+
+ if(num==0 && to_boolean (note->get_mus_property ("force-accidental")))
+ num=1;
bool different = num < 0;
num = abs (num);
void
Accidental_engraver::acknowledge_grob (Grob_info info)
{
- Note_req * note = dynamic_cast <Note_req *> (info.music_cause ());
+ Music * note = info.music_cause ();
- if (note && Rhythmic_head::has_interface (info.grob_))
+ if (note
+ && note->is_mus_type("note-event")
+ && Rhythmic_head::has_interface (info.grob_))
{
Accidental_entry entry ;
entry.head_ = info.grob_;
ENTER_DESCRIPTION (Accidental_engraver,
-"Make accidentals. Catches note heads, ties and notices key-change
-events. Due to interaction with ties (which don't come together
-with note heads), this needs to be in a context higher than Tie_engraver.",
-
+"Make accidentals. Catches note heads, ties and notices key-change "
+" events. Due to interaction with ties (which don't come together "
+" with note heads), this needs to be in a context higher than Tie_engraver.",
"Accidental",
-/* accepts */ "general-music",
+/* accepts */ "",
"rhythmic-head-interface tie-interface arpeggio-interface",
"localKeySignature extraNatural autoAccidentals autoCautionaries",
"localKeySignature");