On Friday 14 May 2010, Niek van den Berg wrote: > However this construction ignores the event property "accidental". > ... > now correct notes are in the MusicXML file.
Nobody has worked on the Music XML export code since long before the Pitch class existed. Rosegarden used to have really stupid problems with notes like B# (it would write C# for B#, F# for E# and so on) and it is very likely nobody ever adjusted the Music XML code to take advantage of our newer, smarter pitch and accidental resolution methods. > I'm willing to create a patch but I still have another problem. Now at > least the notes are correct (B B# A# Cb) but the B# is one octave too high > and the Cb is one octave too low. It looks to me > Pitch::getOctave(octaveBase) is doing something strange because it ignores > the pitch accidental. But this method is called in several places and I'm > not sure what will be broken when changing this. Maybe somebody can > comment on this? I can remember at least one other place in the code where I had to have some manual if/then logic in there to override edge cases where Pitch::getOctave() would come out wrong. If you make Pitch::getOctave() smarter, you will break code in these places, and I don't remember where they are. It would be safest just to do the same kind of if/then logic in here. It's probably screwing up at the B#/Cb divide. I don't know exactly what the pattern will turn out to be off hand, but there should be a pretty simple test to make if this and this and this are met, then change the result by this much. Sorry I'm being so vague. -- D. Michael McIntyre ------------------------------------------------------------------------------ _______________________________________________ Rosegarden-devel mailing list [email protected] - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-devel
