I've had this same idea a couple of years ago, but I soon forget about it for an absolute lack of collaboration on the programming side.

So, first of all, which OS?
Windows, Mac or Linux?

Then, which language? (.Net ...)

Then again, wich libraries? (DirectX...)

After all this choiches, we have to know some project specs. As an example, I hope that you will consider standard MIDI format for styles files, so that it will be easy to build styles with any soft sequencer.

Regarding chord recognition algorithm, this is absolutely not easy, because you know that same position can lead to different chords.
Following starkeeper example, how can you decide if those notes belong to Am7 or to C6?
I think that this problem has no solution, and it needs more informations to properly solve it.
One way to decide correct chord is adding another lower note which will help the machine in this decision: if lower note is C then the chord will be C6; if it's A it will be Am7.

Another thing to think about. Current arrangers can transpose what they are playing following your chord progression (and this can be relatively easy to do, applying some simple math to MIDI notes events); but they chan change a major progression in minor or 7th or whatever chord they recognize. This is not so easy: to change from major to minor you have to identify all 3rd notes, and lower them of half a tone; from major to 7th you have to add 7th note; and things get more complicated as chords go more complicated.
Remember that all this computing work should be performed in real time, because when you change the chord on the keyboard you expect the style to immediately change, according to the new chord.

Anyway, this message is for offering you my support in this project. If you decide to develop it for Windows using VB (6 or .Net) and DirectX I will be proud to help you.




[This message has been edited by RicFreak (edited 02-23-2005).]