Blues for Gary: Design Abstractions for a Jazz Improvisation Assistant

We describe the design and implementation of a tool to help students learn the art of jazz improvisation. The tool integrates elements of database, AI in the form of automatic melody generation, and human interface design. We describe the philosophy of using several coordinated mini-languages to provide user specifications for various aspects of the tool, including melody and chord representation, styles, melody generation, and other musical knowledge.