Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Algorithm for generating guitar chords

830 views
Skip to first unread message

Deniz Dogan

unread,
May 18, 2011, 12:15:56 PM5/18/11
to
Hi, group

I'm writing an Emacs major mode (if you don't know what that means,
don't worry, it's not a major scale...) in which I want to be able to
input a chord such as A or Cm6 or what-have-you and print a description
of how it can be played.

For example the A chord could be described in a variety of ways:

e-0 e-5 e-9
B-2 B-5 B-10
G-2 G-6 G-9
D-2 D-7 D-11
A-0 A-7 A-12
E-x E-5 E-x

Is there any general algorithm for generating these combinations for
guitar chords? Look at e.g. all-guitar-chords.com, they seem to be able
to generate just about any combination for all chords.

Could anyone help me out?

Thanks,
Deniz Dogan

Tony Done

unread,
May 18, 2011, 3:24:34 PM5/18/11
to

"Deniz Dogan" <de...@dogan.se> wrote in message
news:ir0rbs$abv$1...@speranza.aioe.org...

There are a lot of chord finder sites on the internet that give fretboard
diagrams, I'm surprised there isn't one that does that. It would be useful
for non-binary Usenet, but I'm wondering why you need the string names. -
many of already use the "x02220" convention.

Tony D

one_riff_brian

unread,
May 18, 2011, 3:44:09 PM5/18/11
to

Are you sure they're generated, and not looked up in a database?
Taking "B" and "minor 7th" as inputs, looking up "minor 7th" in a
database, and generating the set of pitches B,D,F#,A is easy for a
computer, getting from there to a chord that humans could physically
finger is not. I'd suspect that humans have checked the database- 12
pitches x 50 chord types x 8 variations = not really that many- to see
if they're physically possible.
>

the_cat

unread,
May 18, 2011, 3:48:20 PM5/18/11
to
> pitches x 50 chord types x 8 variations = not really that many- to see
> if they're physically possible.
>
>
>
> - Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

But some people have 6 fingers and some only have toes? and some have
to fat a fingers and some play guitar with there nose . etc
etc. . ... e

Deniz Dogan

unread,
May 18, 2011, 4:26:27 PM5/18/11
to

That is what my current solution looks like. But I figured since music
is mathematics, there should be an algorithm that does something like this.

I was thinking that maybe a naive way to do it would be something like this:

1. Given "A minor", Parse the root note in question, i.e., "A".
2. Parse its "variation" (I'm really not sure about the terminology
here), i.e., "minor".
3. Look up the "minor" pattern in some database. In this case, we will
find [0 3 7]. These numbers represent the root note, then the note
three semi-tones higher and then the note seven semi-tones higher. This
is then translated to [A C E], by looking at the root note we got in step 1.
4. Generate a bunch of notes that are part of that chord until we reach
the highest octave possible on a guitar into a list as e.g. [A3 C4 E4 A4
C5 E5 ...]. Let's call this list L.
5. Scatter these notes onto a data structure representing the fret board.
6. Get all of the possible combinations of notes from L. We call this
list of combinations C.
7. Remove combinations in C that have duplicate notes, e.g. a
combination with two occurrences of A3 (those are useless (I think)).
8. Remove combinations in C that are "impossible" to hold on a guitar
according to some heuristic which says something like "no notes must be
more than four frets apart on the fret board".

After that, I *think* C is a pretty decently generated list of
combinations. Comments or thoughts on this?

Thanks,
Deniz Dogan

Lumpy

unread,
May 18, 2011, 6:19:43 PM5/18/11
to
Deniz Dogan wrote:
> ...Comments or thoughts on this?

WHY do you want to build this applet?
The answer to that might drive your answer.


Lump


Deniz Dogan

unread,
May 19, 2011, 4:00:13 AM5/19/11
to

Primarily because I want to see whether it's possible at all to do it
algorithmically. Secondly because I don't like the idea of having to
maintain a huge database of all possible combinations of chords and the
different ways in which one can play them.

On top of that, it would be an interesting exercise for me personally,
programming-wise.

Lumpy

unread,
May 19, 2011, 10:04:16 AM5/19/11
to

Lump:

> > WHY do you want to build this applet?
> > The answer to that might drive your answer.

Deniz:


> Primarily because I want to see whether
> it's possible at all to do it

> algorithmically...

Seems like a reasonable mental exercise.

> ...Secondly because I don't like the idea of having to


> maintain a huge database of all possible combinations of chords and
> the different ways in which one can play them.

Seems like a useless mental exercise. Play yer geetar.
Nobody wants to hear a lexicon of chords. They want
to hear songs.

> On top of that, it would be an interesting
> exercise for me personally,
> programming-wise.

Like #1 above, a reasonable mental exercise.


People have been publishing "10,000 Guitar Chord" books
for decades. Unsuspecting new players buy into the concept,
pay money for the book, think they have to then memorize
10,000 different variants, then give up. In the mean time,
somebody else learns how incredibly simple it is to form
any chord based on one of just a couple of basic chord shapes.

Adding some kind of computer database does nothing but
slow the process. ANY competent teacher can teach you
to play ANY chord humanly possible within roughly two
sessions. Then when you're done with either the human
or the computer learning variant, you STILL don't know
how to play any songs.

Program stuff if the programming interests you.
If you want to learn to play guitar, play guitar.


Lump


Charmed Snark

unread,
May 19, 2011, 1:08:19 PM5/19/11
to
Deniz Dogan expounded in news:ir1a1i$k2r$1...@speranza.aioe.org:

> On 2011-05-18 21:44, one_riff_brian wrote:
>> On May 18, 5:15 pm, Deniz Dogan<de...@dogan.se> wrote:
>>> Hi, group
>>>
>>> I'm writing an Emacs major mode (if you don't know what

>>> that means, don't worry, it's not a major scale...) ...

I use MicroEmacs myself, which has a much smaller foot-print
than the Gnu version. But I should someday revisit that. I
couldn't use it a years ago because certain features I needed
were broken at the time. Hopefully they work by now.

...

> That is what my current solution looks like. But I figured
> since music is mathematics, there should be an algorithm
> that does something like this.
>
> I was thinking that maybe a naive way to do it would be
> something like this:
>
> 1. Given "A minor", Parse the root note in question, i.e.,
> "A". 2. Parse its "variation" (I'm really not sure about
> the terminology here), i.e., "minor".

> 3. Look up the "minor" pattern in some database. ...
> Thanks,
> Deniz Dogan

A) No database is needed. That is a brute force technique,
which then requires someone to manually (re)check everything.

Let the computer do the work instead. Find one way of
generating the chord and then adapt it to the key that the
user wants as the last step. There will be much less to verify
this way.

B) I would also not process in terms of note "letter names"
for the chord until the very end. Translated it when you need
to present it to the user. This alone will save you a lot of
unnecessary baggage. Simply use numbers 1-7 or if programming
in C/C++/Java you _could_ use 0-6 (internally, of course).

For example, a simple major chord is just:

1) 135
2) in a major scale (i.e. 1=root of some major scale).

Change #2 to a minor scale, and you have the minor chord as
well.

At the very end, translate the numerics to the actual named
chord:

(root) 1=C

therefore the 135 (major) chord is CEG.

Apply the same algorithm for Maj7 or dom7th chords (i.e. all
other chord forms). For example the Maj7th is just 1357
(ignoring which note(s) to drop).

STEP 3)

You must also take the fingering into account. But this to can
be done if you get your ducks in a row...

3A) You'll need to define your "tuning" first (user input).

3B) Then you'll need a little matrix of what fretted notes are
reachable. 6 strings X 4 frets. Actually, you'll have
multiple of these since there are multiple places to play on
the neck. Perhaps 1 matrix for each starting fret number.

3C) Because there are multiple answers you'll want to
construct a tree of solutions or use recursive calls to
produce multiple solutions. But pipe your answers to a common
sorting/reducing point, so that duplicate solutions are
elminated.

4 FINGERS)

In the case of 7ths and 9ths etc. there are alternatives in
terms of which notes to leave out (you only have 4 fretting
fingers, unless you count wrapping your thumb around). For
example, the 7th is commonly dropped in a 9th chord.

Again you'll need some recursive calls to produce variations
at this level, keeping the "reach matrixes" in mind.

5 INVERSIONS)

If you really want to be thorough, you'll also need to
consider all possible inversions as well.

The "engine" needs to be designed similar to a
checkers/othello game, where all workable solutions are
created, sorted and reduced (to eliminate any duplicate
solutions). You might even score the chord solutions by
difficulty.

Sounds more like a thesis project to me 8->

Snark.

Deniz Dogan

unread,
May 19, 2011, 2:11:09 PM5/19/11
to
On 2011-05-19 16:04, Lumpy wrote:
> Lump:
>>> WHY do you want to build this applet?
>>> The answer to that might drive your answer.
>
> Deniz:
>> Primarily because I want to see whether
>> it's possible at all to do it
>> algorithmically...
>
> Seems like a reasonable mental exercise.
>
>> ...Secondly because I don't like the idea of having to
>> maintain a huge database of all possible combinations of chords and
>> the different ways in which one can play them.
>
> Seems like a useless mental exercise. Play yer geetar.
> Nobody wants to hear a lexicon of chords. They want
> to hear songs.
>

I honestly don't know what you're getting at here?

>> On top of that, it would be an interesting
>> exercise for me personally,
>> programming-wise.
>
> Like #1 above, a reasonable mental exercise.
>
>
> People have been publishing "10,000 Guitar Chord" books
> for decades. Unsuspecting new players buy into the concept,
> pay money for the book, think they have to then memorize
> 10,000 different variants, then give up. In the mean time,
> somebody else learns how incredibly simple it is to form
> any chord based on one of just a couple of basic chord shapes.
>

Yes.

> Adding some kind of computer database does nothing but
> slow the process. ANY competent teacher can teach you
> to play ANY chord humanly possible within roughly two
> sessions. Then when you're done with either the human
> or the computer learning variant, you STILL don't know
> how to play any songs.
>

As I said before, I don't want to make a giant database which maps
chords to frettings. I want to make an algorithm, which given a chord,
generates a valid fretting.

I think the feature I'm talking about is very useful either way. E.g.,
consider a new guy who wants to learn how to play the guitar and
attempts to figure out on his own how to play some new weird chord.
With my feature, he/she could quickly see the "right answer" after
they've tried themselves and see whether they were right or not.

Lumpy

unread,
May 19, 2011, 2:19:31 PM5/19/11
to
Deniz Dogan wrote:
> I think the feature I'm talking about is very useful either way.

I don't.

> E.g., consider a new guy who wants to learn how to play the guitar and
> attempts to figure out on his own how to play some new weird chord.

Post an example of what you think is a "new weird chord".

> With my feature, he/she could quickly see the "right answer" after
> they've tried themselves and see whether they were right or not.

Why does this theoretical new guitarist have to refer to
a computer algorhythm to figure it out? Forming chords isn't
like trying to figure pi to the 11 billionth decimal place.
There's only a couple of basic chord shapes. You modify them
a small handful of ways and you form any chord you want.

Again...Sounds like an interesting programming exercise,
but as a guitar learning device, worse than useless.

Prove me wrong.


Lump


the_cat

unread,
May 19, 2011, 2:24:49 PM5/19/11
to

yep -
" I want to play my guitar - now where is my laptop!!!!!!!! ahhhhhhhh)
just buy a pocket chord book.. good enough to get started ,, and
later on knowing theory you can just figure them out .. e

Deniz Dogan

unread,
May 19, 2011, 3:03:19 PM5/19/11
to
On 2011-05-19 20:19, Lumpy wrote:
> Deniz Dogan wrote:
>> I think the feature I'm talking about is very useful either way.
>
> I don't.
>
>> E.g., consider a new guy who wants to learn how to play the guitar and
>> attempts to figure out on his own how to play some new weird chord.
>
> Post an example of what you think is a "new weird chord".
>

It's not a matter of what *I* think is a new weird chord. It's a matter
of what the *user* finds to be a new weird chord. A couple of examples
(which aren't necessarily weird to me or anyone else for that matter,
but *could* be) are *7sus4 and *m7-5 where * is any note.

If this user is lazy and doesn't really care much about music theory and
just wants to "play his geetar", this is a very useful feature. If I
don't implement the feature, this user would just make a Google search
and find it anyways. But nothing is stopping him from figuring it out
on his own.

>> With my feature, he/she could quickly see the "right answer" after
>> they've tried themselves and see whether they were right or not.
>
> Why does this theoretical new guitarist have to refer to
> a computer algorhythm to figure it out? Forming chords isn't
> like trying to figure pi to the 11 billionth decimal place.
> There's only a couple of basic chord shapes. You modify them
> a small handful of ways and you form any chord you want.
>

The new guitarist *doesn't* have to "refer to" this algorithm to figure
a chord out. I'm not saying it's difficult at all to figure out how to
play a chord.

What I'm programming is -- as I said in my original message -- an "Emacs
major mode". Emacs is like a text editor to the power of infinity. I
am an Emacs enthusiast.

The idea is to load up a song with lyrics and chords into Emacs and then
have the ability to quickly do stuff such as e.g. transpose the entire
song into any key. I've already completed that part and I have found
great use for it myself.

> Again...Sounds like an interesting programming exercise,
> but as a guitar learning device, worse than useless.
>
> Prove me wrong.
>

I never said this algorithm is meant to teach *anyone* *anything* about
the guitar. I want to have this algorithm so that I don't have to
resort to using an ugly and potentially huge database of chords and
frettings.

And even so, it *is* a good guitar learning experiment for me
personally, as I'm sure I will understand a lot of new things about
music which I would probably never bother reading about otherwise.

Lumpy

unread,
May 19, 2011, 3:36:28 PM5/19/11
to

Lump:

> > Post an example of what you think is a "new weird chord".

Deniz:
> It's not a matter of what *I* think is a new weird chord...

Of course it is. YOU are the one that coined the phrase.
Obviously you think there is such a chord. And you seem to
think you can speak for (now) someone other than yourself.


> The idea is to load up a song with lyrics and chords into Emacs and
> then have the ability to quickly do stuff such as e.g. transpose the

> entire song into any key...

Amazing that you think you need a computer to do that.

Again...Any reasonably competent teacher should have you
doing that, without a computer, in a matter of minutes.
Two lessons max. Three for the severely retarded.


Lump

Deniz Dogan

unread,
May 19, 2011, 4:47:42 PM5/19/11
to
On 2011-05-19 21:36, Lumpy wrote:
> Lump:
>>> Post an example of what you think is a "new weird chord".
>
> Deniz:
>> It's not a matter of what *I* think is a new weird chord...
>
> Of course it is. YOU are the one that coined the phrase.
> Obviously you think there is such a chord. And you seem to
> think you can speak for (now) someone other than yourself.
>

The point I'm trying to get across to you -- and I've said this already
-- is that I am only looking for an algorithm to generate a bunch of
different frettings given a chord.

In other words:

I AM NOT EXPECTING THIS ALGORITHM TO TEACH ANYTHING ABOUT MUSIC TO ANYONE.

There is software for displaying frettings all around. There are
several websites for it. But I'm not sure if they use a huge database
(likely) or an algorithm (which would be interesting).

>> The idea is to load up a song with lyrics and chords into Emacs and
>> then have the ability to quickly do stuff such as e.g. transpose the
>> entire song into any key...
>
> Amazing that you think you need a computer to do that.
>
> Again...Any reasonably competent teacher should have you
> doing that, without a computer, in a matter of minutes.
> Two lessons max. Three for the severely retarded.
>

I don't need a computer for it. No one does. It's extremely easy.
That is not at all what we're even discussing. But let me tell you why
I thought of this guitar mode in the first place:

There is a Swedish singer named Allan Edwall (or was, rather, peace be
upon him, etc.) whose songs I enjoy listening to (and playing!) very
much. There is only a handful of his songs with chords on the Internet
at this time. Since I'm too lazy to figure out all of the chords on my
own, I decided to borrow a book from the local library which has all of
his chords and notes to his songs.

Great! But bear with me here, because I know very little about music
theory and even less about notation... I noticed that a lot of the
sheets were written in a different key than the corresponding songs.
Since I'm oh-so-lazy and oh-so-programmer, I decided that I wouldn't
stand for transposing all of these songs on my own.

And then a new Emacs major mode was being born.

Tony Done

unread,
May 19, 2011, 5:11:11 PM5/19/11
to
>
> I think the feature I'm talking about is very useful either way. E.g.,
> consider a new guy who wants to learn how to play the guitar and attempts
> to figure out on his own how to play some new weird chord. With my
> feature, he/she could quickly see the "right answer" after they've tried
> themselves and see whether they were right or not.

Also Lumpy and other teachers:

Don't you play the weird new chord first, then figure out what to call it? I
certainly do, though I wouldn't bother worrying about a name for it, I would
call it eg x 12 13 12 x.

Tony D

the_cat

unread,
May 19, 2011, 5:17:58 PM5/19/11
to

good point Tony. ( but it would help in figuring out what will work
with it - but I don't think this is "begiiner stuff") - e

Tony Done

unread,
May 19, 2011, 5:53:15 PM5/19/11
to

It just occurred to me that that might be a more useful project for
the OP. - "I have this chord X12 14 15 13X. What should I call it in
the key of [insert your choice here]?" That could be useful for
communicating with others. and for exploring other keys and chord
relationships.

Tony D

one_riff_brian

unread,
May 19, 2011, 7:13:49 PM5/19/11
to
On May 19, 7:11 pm, Deniz Dogan <de...@dogan.se> wrote:

>
> As I said before, I don't want to make a giant database which maps
> chords to frettings.  I want to make an algorithm, which given a chord,
> generates a valid fretting.

Now, I think an algorithm to generate *conceivable* fingerings is the
easy bit, computer generation of *physically possible* fingerings is
not so easy, and identification of the *useful* fingerings, with the
hammers and pull-offs that will really spice up your playing is harder
still.


>
> I think the feature I'm talking about is very useful either way.  E.g.,
> consider a new guy who wants to learn how to play the guitar and
> attempts to figure out on his own how to play some new weird chord.

In my experience, the more weird looking the chord when written down,
the simpler it is to finger. Chord naming conventions are notorious
for making a simple manoeuver with your pinky look like a scary new
chord.

> With my feature, he/she could quickly see the "right answer" after
> they've tried themselves and see whether they were right or not.

The "right answer"? If they can bring their playing alive, they've
found the right answer.

I'd have to concur that learning how to get Emacs to jump through
hoops is a worthy goal, but I think you've wildly overestimated the
usefulness,and originality of this project. But here goes....

Take, as an example Bm7. Either parse it, or use 2 pull-down menus to
generate the component pitches B,D,F#,A. Every string is either
silent, open or fretted at one of the components, so the possibilities
for each string are:
E: x,2,5,7,10,14
B: x,0,3,7,10,12,15
G: x,2,4,7,11,14,16
D: x,0,4,7,9,12,16
A: x,0,2,5,9,12,14
E: x.2,5,7,10,14

Now, introduce the extra constraint of a human hand, and say that each
string is either silent, open, or fretted between frets 1 and 4. The
possibilities narrow down to:

E: x,2 Silent or F#
B: x,0,3 Silent, B,or D
G: x,2,4 Silent,A or B
D: x,0,4 Silent ,D or F#
A: x,0,2 Silent, A or B
E: x,2 Silent or F#

Ignoring the "silent" option, there are 16 possibilities, some of
which won't deliver all 4 pitches, which your algorithm can eliminate,
and some just won't be physically playable, but will include x20202
and the barred 224232.

Hope this helps you have a rewarding journey.

Lumpy

unread,
May 19, 2011, 9:18:38 PM5/19/11
to
Tony Done wrote:

> Also Lumpy and other teachers:
>
> Don't you play the weird new chord first, then figure out what to

> call it? ...

Not really, no. It's always in context to the rest
of whatever I'm playing.

There's two scenearios possible here (two at least).

If you fret a few notes on a few strings, then strum
or arp it and say "What chord is this?" Example,
Pt's Abm vs G#m in the key of E. Or C6 vs Am7.
Probably any 11th chord.

Then the answer could be quite different if you
played a few related chords first (I vi ii V or et al)
and THEN played the weirdo chord. The weirdo chord
would then be in context of the other, normal chords.

I guess a 3rd scenario would be "Computer - give me the
fingering for an XX chord". There could easily be several
DOZEN fingerings for that XX chord. By the time you wade
through all of them, it's simpler, and much more intuitive,
simply play whatever chord is needed in the f'board area
you're already at.

ie, say you know you need some kind of sub-dominant function
chord. As if your song calls for the IV (the sub-dom) and
you want to substitute something juicer.

So instead of a IV or IV7, play ii or iim7 or #V9 iim7b5
or iv (minor) or yada yada. Some of those may seem like a
mouthfull (handfull?) if you're not used to them. But they're
just names. When you started out I IV and V were foreign too.

Every chord in the universe simply reads from left to
right. You start on the left then add any modifiers on
the right.

E7#9 means you start with an E chord. Add a 7th. Add a 9.
Sharp that 9.

F#m7b5 means you start with an F# chord. Make it minor.
Add the 7th. Flat the 5.

Ab69#11 means you start with an Ab chord, add the 6,
add the 9, add the 11, move the 11 up an additional half step.

Some times you shortcut the chords. For F#m7b5, for example,
you may already know how to play F#m7. In that case, simply
flat the 5.

If you base all your chords on just a couple of simple
shapes (E A C for me) then you can use any of those simple shapes,
and apply mods as needed, since you know where all the
roots, 3rds, 5ths and 7ths are at in the plain Jane chord.

Example:
Em7b5 - Play an Em7. You know where the 5th is, flat it.
G7#9 - Play a G7. You know where there's a high root (8th/octave).
The 9th is 2 half steps above. The chord asks for a #9 so move
that 9th up another half step.

Takes much more time to write than to describe.
Takes much more time to describe than to do.

Play ANY chord about 3-4 times and you have it in your
memory. You no longer have to do the figuring. But any time
someone does try and spring a weirdo on you, revert to doing
the math.

Chords are simple.


Lump


Tony Done

unread,
May 19, 2011, 10:38:29 PM5/19/11
to

"Lumpy" <lu...@digitalcartography.com> wrote in message
news:93lttb...@mid.individual.net...

I didn't mean to imply that it was not in a specific context - that's why I
mentioned "in the key of [ ]". An example - I play "St Louis Blues" in D
with open D tuning (DADf#ad), mostly slide, but one fretted chord I use is
10 9 10xxx, found just by hunting around for the right sounding triad. I
think of it as a Cdim, but I'm not at all sure that is a good name for it. I
don't doubt it fits neatly somewhere in the theoretical framework, and
having a suitable name for it might help me figure it out.

Tony D

RichL

unread,
May 19, 2011, 10:57:48 PM5/19/11
to
"Tony Done" <tony...@bigpond.com> wrote in message
news:KukBp.4547$aH5....@viwinnwfe02.internal.bigpond.com...

It's *part* of a Cdim, it's basically that tritone interval with an octave
repeat: C + F# (or Gb) + C. If you can somehow sneak a D# (or Eb) into it,
it would be Cdim. I think (10 9 10 9 x x) does the trick in that tuning.

Lumpy

unread,
May 20, 2011, 3:01:07 AM5/20/11
to
Tony Done wrote:
> I didn't mean to imply that it was not in a specific context - that's
> why I mentioned "in the key of [ ]". An example - I play "St Louis
> Blues" in D with open D tuning (DADf#ad), mostly slide, but one
> fretted chord I use is 10 9 10xxx, found just by hunting around for
> the right sounding triad. I think of it as a Cdim, but I'm not at all
> sure that is a good name for it. I don't doubt it fits neatly
> somewhere in the theoretical framework, and having a suitable name
> for it might help me figure it out.

I'm not sure I know the song or where in the song that
chord happens.
But what I would surely do would be say
"It's time to be on the IV chord" (or whatever chord).
If it were indeed the IV then I'd be thinking of chords
that share the subdominant function.

Or, separately or at the same time, I might be thinking -
"That note right there needs to move down a half step".
Once I did that I'd consider that new note as a chord tone.
That note might be a simple root or 3rd or 5th, or it
might be something more weird like a sus4 or 7th or 9th
or (rarely) even something as weird as a b5. But it would always
be in context of "it's time for the IV chord".

All that probably sounds pretty complex. It's not.
All songs can be broken down in to their vanilla chords.
Then they can be filled with subs to whatever degree you like.

Maybe an example...
Say I was in the key of C. I was playing I vi ii V all day long.
Then while on the ii (Dm7) I felt like the A in the bass wanted
to move up a half step to Bb. I just played the ii and now it's
time for the V. But I want that Bb in the bass so I play a chord
with Bb in the bass, Bb (the IV of IV). That IV or IV chord is
nearly the same as the v(minor). THAT is a Dominant chord which
wants to resolve back to the I like all good Western compositions.

Bb = Bb D F
G7 = G B D F
Gm7= G Bb D F

See the similarity? Bb and G7 share two notes and one additional
note is only a half step apart. Or you could say that Gm7 and G7
share 3 notes in common, one note is only a half step apart.

Again, it's longer to describe than to do.
Try it. Tempo rather brisk. No lingering to diagnose chords

I vi ii V = CM7 Am7 Dm7 G7
I vi ii IV/IV = CM7 Am7 Dm7 Bb

Hear the Bb wanting to resolve back to the I ?


Lump


the_cat

unread,
May 20, 2011, 12:05:10 PM5/20/11
to

Damn Lump it's 2 am - I though you were good a rests? e

Tony Done

unread,
May 22, 2011, 4:27:28 AM5/22/11
to

"RichL" <rple...@yahoo.com> wrote in message
news:goGdnVZjJPsgRUjQ...@supernews.com...

And Lumpy.

I can only use three fingers for fretting when I have a slide on my pinky,
but x9 10 9xx doesn't sound good. OTOH, 10 9 10 000 or 10 9 10 12 12 12
(fretting behind the bar) does sound OK.

The chord is used at the end of a line to add tension:

I got the St Louis Blues, Blues as I can *be*
12th fret slide stuff............................... C thing

That man's got a heart......
5th fret slide stuff.......

[10 minutes later] After reading Lumpy's explanation, a light came on in my
head - it's a D7!! Who'd a thought it?

Tony D

jon....@gmail.com

unread,
May 23, 2011, 11:49:00 AM5/23/11
to

Its a long thread, so I may be repeating. Its an interesting problem,
I do my fair share of programming in music but have not done this.
What comes to mind is to get everything then its brute force /
"combinations" (nCr) + some rule application to sanitise the
output.

1. Take a defined range of frets you could potentially fret with 1
hand, say frets 1 to 5 inclusive.
2. Identify the notes in the chord (for example, C E G B).
3. In your defined range on the 6 strings, pick notes on the
strings.
4. Calculate every permutation of 3 or more notes up/down/around (fun
thing, program for the inclusion of open notes as well, these can be
played in any range / doesnt use a finger)
6. Filter. 2 filters to apply:
* Sanity check: Need to remove with 2 or more notes on 1 string,
obviously you can only have 1 note per string. Need an algorithm to
pick out playable 5 note+ chrods, i.e. the ones you can barre and ones
where you cant (remove them, e.g a simple algo barring on 2nd fret and
playing a notes on first fret in the middle of the barre etc). There
are a few basic metrics that should get you a realistic output (finger
stretching etc)
* Special rules, if you are looking for a major 7th, its generally
good to have the 3rd and 7th in it. You can apply a filter to rule
out chords that do not have a 3rd and 7th.
7. Shift the range of the frets up by one. For example, from frets
1-5 to 1-6. Repeat till you hit 13-17 (then you can just add 12 to
the octave lower)

Because you are shifting up by 1 and recalculating you will get
duplicates, you need a simple way of describing the uniqueness of the
chord (fret + string) and knock out duplicates.

If you write this reasonably efficiently and use numbers to represent
notes then its not exactly the hardest thing for a computer to do,
over 12 frets it should be instant or near as. Writing a combination
class that iterates through an subsets of an array of numbers is
fairly simple, there should be alot on google about it.

The only other way I could think about it is define a series of
"known" chords. Essentially maj / min / dim / aug triads, their
inversions and drop 2 etc. Then work out an algo to pick out custom
"colours" e.g. #4, 7ths etc. This is more how I do it when playing
the guitar, although to do this programatically you will need some
more special rule application and it will be hard / get basic things.

This may be helpful, but I've recently found the art of learning these
chords is being able to do this in you head and really this comes into
its own when you are going from Cmaj -> Gmaj, picking out common notes
etc. Its like mental arithmitic, slow to begin with but the more you
practice, the more you gain the ability to do this quickly. But they
are handy, I have something similar (every drop 2 inversion of 7th
chords) to help me when I get stuck.

Hope that helps,
Jon

jon....@gmail.com

unread,
May 23, 2011, 11:55:58 AM5/23/11
to
On May 23, 4:49 pm, "jon.mi...@googlemail.com" <jon.mi...@gmail.com>
wrote:

1-5 to 2-6*

0 new messages