>> First, create a chord from a given label
>> supplied by the user and second, label a chord from a collection of
pitches
>> that the user supplies.
>
>We already have a mechanism for making things from labels. It is
>called `identifier'. Do not duplicate this mechanism.
This is not what I meant. I meant a chord identifier such as m7 or maj7b5.
It is *not* the same thing...
>> The problem with this approach is that
>> you lose everything that tells you what the chord is--its identifier, its
>> inversion, the additions, and subtractions.
>
>No, the chord is reduced to its essence: a list of pitches. From this
>list it should be possible reconstruct the name. The only thing that
>perhaps should be stored as an extra is the bottom pitch (the
>inversion pitch).
I can see that you didn't understand what I said at all. That approach
won't work because there are things that you can construct that are
ambiguous e.g., CM6 vs. Am7: how are you supposed to decide, especially if
the picthes are in an open spacing? Like I said before, there are two
contexts that this whole chord thing can occur in: One where the user has a
certain flavor of chord in mind and you go look in the box to see what
matches that flavor and you give it to them, and one where the user hands
you a list of pitches and says, "Here, figure out what this is." The second
case is a lot more problem prone (just ask anyone who uses Cubase) and
subject to ambiguities while the first case is not. And, in the second
case, you're still going to have to do a whole bunch of if-then statements
anyway, so what's the problem (I can fix the stuff in Chord::Chord BTW)?
-- Shamus