[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-]
--------------------------------------------------------------

Reply via email to