*** THIS PROJECT IS STILL VERY MUCH IN ALPHA ***
so, this is the 'very alpha' version of Gchords!, the guitar-counterpart of Chords! (which is for piano).
this one turns out to be a lot harder than the piano, because you have to consider hand-placement and the fact that you have only 4 fingers and all that stuff on a guitar. i've been struggling with this for a while now and can't seem to get much further. which is why i decided to just post it here and hope people get enthusiastic and try it out, and maybe come up with some possibilities for changes that would make this more useful.
(dependencies: python and python-curses)
so, why is it not useful now? well, it does not take into account hand-placement or the amount of fingers, nor does it have any way of determining whether a string should be muted or not, nor does it look for the most optimal construction of a chord.
yes, i could just make a big list of chord-patterns and just have it read from that. however, that would be too easy (mehh ) (look at the code and you'll see such a list already in part... so i considered it out of desperation already)
currently it is already nice and useful to discover some weird chords and whatnot.
it is built on the bones of Chords! so it looks pretty much the same. here's the code: http://pastebin.com/57v2rzXE
just save that as gchords.py and start it with 'python gchords.py' - be safe and use a fullscreen terminal so it will definitely fit on your screen (haven't learned to account for terminalsize yet..)
if you want to have a different 'mode' of display, go to line 358 and change this:
which is useful for 'debugging'.
let me know what you think, hit me with questions, suggestions, whatever. if you have any idea on how to improve this, have pieces of code to change, i'm all open for it.
edit: btw: F2 switches between A# and Ab style notation (not very useful at this stage but okay). F3 shows you all the chord-positions on the neck (very useful at this stage ). alternate tunings should be possible in the future, but i want to make it solid in standard tuning first.
@Vansgo: thanks man!
@johnraff: no problem man, there is no need to hurry. just test it out if you got the time. you'll find how crude and incomplete it currently still is. hopefully you'll be able to help me improve this thing to the point where it becomes so that the search for an experimental strange chord is optional instead of normal
thanks VastOne! dunno about your guitarskills, but try it out if you like!
btw, thought of some extra handy info for testing, added it to the main post, here it is again:
edit: btw: F2 switches between A# and Ab style notation (not very useful at this stage but okay). F3 shows you all the chord-positions on the neck (very useful at this stage smile). alternate tunings should be possible in the future, but i want to make it solid in standard tuning first.
i've been struggling along with my code again today. i've come to the conclusion that i need to learn a lot more Python to make this work properly. i especially need to get proficient with the itertools-stuff, as iteration over lists is what i'm constantly having to do here.
i've also made an attempt to lay down some basic rules the script should follow when building chords:
- no more than 4 individual notes (max fingers) - (notable exception being barre, but we'll think about that some other day...)
- no more than 2 frets of space in between (span no more than 4 frets - max handsize )
that's about it. and the rest of the night i made futile attempts trying to program that stuff in. i'll probably end up doing a complete rewrite after i figured most of this stuff out, because if i won't, this script will be even messier than it already is
any Python gurus in the house?