[Quoting Jan Nieuwenhuizen, on December 1 1998, 11:32, in "RE: Chord Transposit"]
> Some assumptions
>
> Chords can be uniquely identified/represented in three ways:
> * using names such as "Cmin7" "Ebmaj9"
There are chords and fingerings.
A chord is a well-defined sound, usually used for accompaniment. It
consists of a tonic (e.g. C) and a modifier (e.g. Major, Minor7).
Chords are not dependent on instrument, and mostly used in pop and
jazz music.
A fingering is a usual graphical way to represent what exact notes are
required, and how to obtain these. Fingerings are instrument-specific
and used in textbooks and in classical music. I have appended a
PostScript example of a fingering for Guitar (Attachment A).
> * identify the lowest note, and list all other notes
> relative to this one; "C: mi-flat, sol, ti"
> "Es: mi, sol, re"
> * use a list of pitches "<c es g b>" "<es g bes f>"
Basically, these are the same.
Rules exist to calculate the individual notes from a chord name, e.g.
Cmin7 => <c e g bes>.
Problem area: incomplete chords, e.g. <c e bes>, that would lead to
verbose names, e.g. Cmin7no5.
> We'll probably want to represent a chord internally using
> a list of pithes.
Tonic first, I assume?
> We'll probably need to devise a "language" that allows one
> to enter the chords in a way that closely resemles their names.
> How to do
> * major/minor
> * augmented/diminished?
See Attachment B for an example.
> What we eventualy need is a new type of "staff", ChordStaff
> that typesets the chord names e.g. "Cmin7" "Ebmaj9".
Precisely.
> Which all means that we need to be able to translate chord
> names into pitches and vise versa (Johan, you already had some
> ancient code for this?).
Yes, I have some perl programs that do this. Basically one routine
parses a chord name in a vector of notes, and two other routines turn
a vector into an ASCII name, or PostScript code to typeset the chord
symbol (see attachment A for an example).
-- Johan
Example of a guitar fingering
Notes: C, D, E, F, G, A, B.
Raised with '#' or suffix 'is', e.g. A#, Ais.
Lowered with 'b' or suffix 's' or 'es', e.g. Bes, As, Eb.
Chords: note + optional modifiers.
Chord modifiers Meaning [examples]
--------------------------------------------------------------
nothing major triad [C]
- or min or m minor triad [Cm Fmin Gb-]
+ or aug augmented triad [Caug B+]
o or 0 or dim diminished triad [Co D0 Fdim]
--------------------------------------------------------------
maj7 major 7th chord [Cmaj7]
% half-diminished 7 chord [C%]
6,7,9,11,13 chord additions [C69]
--------------------------------------------------------------
# raise the pitch of the note to a sharp [C11#9]
b lower the pitch of the note to a flat [C11b9]
--------------------------------------------------------------
no substract a note from a chord [C9no11]
--------------------------------------------------------------
Whitespace and () may be used to avoid ambiguity, e.g. C(#9) <-> C#9 <-> C#(9)
Other: Meaning
--------------------------------------------------------------
. Chord space
- Rest
% Repeat
/ Powerchord constructor [D/G D/E-]
--------------------------------------------------------------