void
Melodic_req::transpose(Melodic_req const & delta)
{
+ int old_pitch = pitch();
+ int delta_pitch = delta.pitch();
octave_i_ += delta.octave_i_;
notename_i_ += delta.notename_i_;
while (notename_i_ >= 7 ) {
notename_i_ -= 7;
octave_i_ ++;
}
- accidental_i_ += delta.accidental_i_;
+ int new_pitch = pitch();
+ int delta_acc = new_pitch - old_pitch - delta_pitch;
+
+ accidental_i_ -= delta_acc;
if (abs(accidental_i_) > 2) {
delta.warning("transposition makes accidental larger than 2");
}