SAVANT

Savant is a music improvisation program that makes use of a computational model of music to be able to analyze chords, generate chords, and turn a set of disordered notes in real-time into good-sounding music.

One favorite use of Savant is its "duet mode", in which a musician plays on the left hand side of the piano, and anyone can play on the right hand side of the piano, with Savant tweaking the right hand notes to ensure that they always match the left hand regardless of what is played, thus the music always sounds good.

Watch Savant in action in a video by the Stanford School of Engineering!

Listen to the recording of Savant in action! In the MIDI files below, several measures of right hand pattern is first inputted to the program. Afterwards, Deri plays chords on the left hand side and Savant improvises the melody on the right hand side.

2009 10 22 Savant Improv 1 medium.mid
2009 10 22 Savant Improv 2 fast.mid
2009 10 22 Savant Improv 3 slow.mid
2009 10 22 Scales 1.mid
2009 10 31 Savant Improv Jazz 1.mid

Savant obtains input from a MIDI controller, analyzes the input in real-time, and generates different kinds of output depending on the mode.

Savant is developed by Tony Wu, Jay Ni, and Deri Kusuma using Java for CS 194 class offered in Spring 2009. The duration of the project from inception to exhibition is around 9 weeks.

In the 2009 software faire, Savant won casual prizes from Apple, Microsoft, Facebook, VMware, and Yahoo, and won 2nd prize from Stanford CS department.

KEY TECHNOLOGY
  • Chord model. Savant's chord model and chord analyis captures a very rich set of chords, from the most basic chords to the most complicated ones. The chord model makes use of basic chord types from music theory, enhanced by note distribution analysis and "feel scorecard" to capture ambiguity.
  • Chord-motif fitting. This feature can take any set of jumbled notes in pitch-time space (usually a short motif) and transform them with as few changes as possible into notes that produce the feel of a particular chord. The fitting makes use of an innovative concept of note desirability of a chord along pitch dimension.
  • Chord progression generation. Savant's chord state machine currently can produce properly started and ended chord progressions in pop style.

We would also like to have automatic motif generation and richer chord progression generation. A potential approach is the use of genetic algorithm to synthesize music from the most basic building blocks to larger building blocks, eventually to a complete piece of music.

RESOURCES

The code is not provided because it is currently largely underdocumented and has a pretty messy structure, since the nature of the project is experimental rather than consumer-oriented. The software also depends on a set of piano sound samples totaling around 60 MB.