Improviser
The music you are hearing, if you are able to hear it, is all being spontaneously improvised by your computer. The Java application that is running has been given a series of chords and is using them, in real time, to generate the music you can hear. The notes are not pre-recorded, and will be different each time the applet is run - so the particular tune playing has never been heard by human ear before!
Listen to the computer playing solos to the changes for the following standards: Round Midnight by Thelonius Monk, Giant Steps by John Coltrane, Stella by Starlight, Autumn Leaves, Green Dolphin Street, One by One by Wayne Shorter, Moments Notice, Have you met Miss Jones?, Turn out the Stars by Bill Evans, Like Someone in Love, Cherokee, In your own Sweet Way, You Must Believe in Spring.
Click here to stop the music, and here to restart it. Click here to change solos now.
Before we start covering our ears, it's important to appreciate that improvising jazz is a most complex skill and high-level artform. To write a computer program capable of even basic artistic abilities is no mean feat, and this program, which I have worked on for the last month or two, is the best of many attempts... Its abilities are increasing as I get time to make it more intelligent.
The algorithm that generates the music is based on scales and arpeggios, with some phrasing and swing added. The machine can play any set of chord changes, and all the parameters and songs can be edited from the editor.
It is not yet capable of learning: this will be the next step in improving the system, and I will regard it as a large step towards an artificially intelligent band-in-a-box.
The piano part took me about 2 hours of programming, the drums another 2 hours, and the bass line took about twice that long. The hardest part was, of course, the solo algorithm. There are in fact three solo programs; each one was based on a completely different approach. One algorithm is modeled on gestures, approximate directions in pitch and shapes. Another algorithm is very harmonic, and concentrates on resolving notes and producing harmonic sense. The newest method I have tried involves creating a motif and then developing it. It generates the phrase based on rhythmic patterns, and then transposes, translates and mutates the phrase in various ways to suit the changes.
As you can hear, the results are still a long way from satisfactory. I find the project a great challenge, and treat it as a learning experience.