Intelligent Music Software

The Impro-Visor (Improvisation Advisor) project has been developing educational software tools to help students learn to improvise music, particularly jazz. Our approach is to aid the student in constructing melodies similar to ones that could be improvised, in order to get a better understanding of harmony and its relationship to melody construction. Two types of advice given are: empirical advice, based on a database of stored melodies that match certain chord changes, and grammatical advice, based on a grammar that generates melodies on the fly. This free software tool has been used in classroom settings for two years and has over 3500 registered users at present. In addition to its primary function, it provides a microcosm of examples for software development, including knowledge representation and real-time execution of music accompaniment.

Possible problems for the summer 2009 include:

  1. Learning Melodic Components: The grammatical approach to generating sample melodies in Impro-Visor has proven to be effective. Last year we succeeded in devising a method for extracting grammars from a corpus of jazz solos. This machine-learning approach was based on clustering and hidden-markov models. This year, we would like to look at ways of learning small-scale components of jazz licks, viewed as a high-dimensional vector, by breaking them down into additive components. Some possible approaches to consider are (a) Principal Components Analysis (or something analogous to it), and (b) Restricted Boltzmann Machines, both of which are forms of neural networks.

  2. Enhancing Real-Time Aspects of Impro-Visor: We would like Impro-Visor to become a better companion for accompanying and trading melodies with the user. Ideally, the real-time improvisor would emulate the thought processes of a human improvisor at a macro scale. Many of the features of the tool are capable of working in real-time, but there are ergonomic interface and knowledge-representation issues to be researched.

  3. Inferring Chord Changes: The Impro-Visor tool provides automatic accompaniment in specific styles based on chord progressions, but creating and editing styles by hand is labor-intensive. Progress was made on extracting style rules from MIDI files using data-mining techniques, but there is further work that can be done. For example, we currently require a lead-sheet file parallel to the MIDI file to indicate chord changes. It would be nice not to require the latter, which would entail inferring the chord changes from MIDI.

  4. Other related topics: music information-retrieval aspects, key mapping, and general computational creativity in music, to name a few.

References:

Mentor: Professor Robert Keller

Professor Keller has been on the faculty of Harvey Mudd College since 1991, having previously held faculty positions with Princeton University, the University of Utah, and the University of California, Davis, as well as having worked in the software industry and with various government laboratories. He has broad interests in computer science, and teaches in areas such as computability and logic, software development, and neural networks. He is an active jazz musician and plays the piano and trumpet in bands in southern California. He also teaches a course in jazz improvisation at the Claremont Colleges.


Required Background

Students should have some background in artificial intelligence or machine learning. Some knowledge of music theory is essential, and being a performer of jazz or popular music is very helpful. Students should be reasonably proficient in software development. Skills in developing Java code are helpful.