in reply to Design for converting between musical formats ?

Skeeve is absolutely correct in his statement. I would recommend the following:
  1. Pick a representation to use internally. I would make one up, probably along the lines of:
    • Key
    • Octave (from some default ... can be negative)
    • Note number
    The point here is to make it easy for you to do manipulation on the note.
  2. Figure out how to convert between your representation and some other representation
  3. Encapsulate that knowledge in some object that is different from your note representation. Have a Converter that will take a Note and return a string or take a string and return a Note.

The way to think about this is to consider Date::Calc or Date::Manip, two standard date manipulation modules. You give them a date string in pretty much any format and they will parse it. You can then manipulate it in nearly any way you can think of. You can then ask for the date back in pretty much any format.

The point here is that Date::Calc doesn't store weekdays as Monday, Tuesday, etc. It stores them as 1, 2, etc. But, it knows how to convert Day 1 to Monday (or lundi, or Mon, or whatever.), or vice versa. That's what you should strive for.

------
We are the carpenters and bricklayers of the Information Age.

The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.