Rod Goodman

Biographical Sketch

Caltech Research

Curriculum Vitae (pdf)

publication List (pdf)

Online Publications

PhD Alumni

Contact Information




Rod Goodman B.Sc., Ph.D., C.Eng., FIET, FIEEE.

ADvanced Music via Information Theoretic Rule Evaluation (ADMIRE)

The ADMIRE team:
Rod Goodman, Randall R. Spangler, Tony Sheng-Te Change, Heather Dean

Click the music to play

We are designing algorithms to automatically learn rules representing a particular style of music (for example, the harmony of J.S. Bach), then use those rules to generate new music in the same style. The ADMIRE algorithms are capable of generating accompaniment for a performing musician in real-time. For example, given as input a melody such as this:

We would like ADMIRE to generate a harmony like this:

Click to listen to J.S. Bach's Harmonized Chorale #001

ADMIRE is entirely written in software. It has minimal hardware requirements and needs no custom-built hardware. ADMIRE accepts user input through the computer keyboard, and through any synthesizer or musical keyboard connected to the computer via a standard MIDI interface. ADMIRE's output is sent back across the MIDI interface to a synthesizer for playback

Features of the ADMIRE System

Learns Musical Rules From Examples:

ADMIRE is capable of learning all its musical knowledge from sample pieces of music. This gives ADMIRE several important characteristics. First, it provides flexibility in the application of ADMIRE to musical styles not originally planned; no recompiling of the software or detailed reconfiguration is necessary to use a new style. Second, use of the package does not require much musical background; rules are determined and prioritized automatically and do not need to be input or tuned by hand. Third, the process is automated; a series of industry-standard MIDI song files are provided to ADMIRE as input, and a series of rulebases are produced as output. Greater control over the rule generation process is available for advanced users, but is not required.

Here are some of the rules generated by ADMIRE using Bach chorales as input:

1. IF Melody0=E AND Function1=V THEN Function0=I

This is the strongest cadence (ending) in classical Bach harmony (G Major -->C Major)

2. IF Melody0=F AND Function1=V THEN Function0=IV

Another common transition (G Major --> F Major)

3. IF Function1=V AND Function0=IV THEN Inversion0=I1

Combined with rule 2 above, always places the V-->IV transition in first inversion

4. IF Function1=V AND Function0=I THEN Inversion0=I0

Combined with rule 1 above, always places the V --> I cadence in root position (the strongest position for an ending chord)

5. IF Function0=vii07 THEN Inversion0=I1

Always places diminished 7th chords in first inversion (in classical Bach harmony, diminished 7th chords are always placed in inversion).

These rules are some of the most commonly used rules in classical Bach harmony, and appear in any first-year music theory textbook. It is important to note that ADMIRE was not told these rules, but learned them on its own.

Rule-Based Knowledge Allows ADMIRE to Explain Itself

Since ADMIRE uses rules to determine which decisions it will make, it is capable of explaining why it has made a decision in terms easily understandable by the user. This is an important distinction between ADMIRE and programs which use neural networks; the latter are often completely unable to explain why a decision was made or the important factors taken into consideration when making that decision.

The ability to explain itself makes ADMIRE useful as an interactive aid for teaching music theory, since it can not only suggest a way of harmonizing an example but can also describe why it generated the particular harmony it did. It is also useful for music historians trying to understand what composers like Bach or Mozart might have been thinking when they wrote particular pieces of music.

Real-Time Functionality

Use of new and efficient algorithms for generating and firing rules allows ADMIRE to run in real-time on today's computers. ADMIRE can be used as an accompaniment for a live musician. ADMIRE's ability to rapidly respond to input is valuable for a wide range of other interactive tasks, such as teaching music theory or real-time control. What next? Well the rhythm is sort of boring. So how do we learn rhythm? Working on it.

Sample Output

In the following two examples, ADMIRE was given common melodies to harmonize. In each case, ADMIRE was capable of generating suitable harmonies. While the harmonies do not match the traditional western harmonies for the pieces, they are still consonant. Had Bach written a harmony for "Happy Birthday," he might very well have written these notes.

Click to listen to ADMIRE's "Happy Birthday" ala Bach

ADMIRE Bach-like harmony for "Happy Birthday"

Click to listen to ADMIRE's "Hark!" ala Bach

ADMIRE Bach-like harmony for "Hark, the Herald Angels Sing"

More MIDI files:

"Liberty Bell", harmonized by ADMIRE.
J.S. Bach Chorale #2, harmonized by ADMIRE (and by J.S. Bach, for comparison) Bach wins! (At the current state of our research)

NOTE: If your browser is capable of playing MIDI files, you can click on any of the images in this document to hear what these pieces of music sound like.

The ADMIRE system is covered by the following patents:

R.M. Goodman and R. Spangler, “Music Composition,” U.S. Patent 5,883,326, March 16, 1999.

R.M. Goodman and R. Spangler, “Music Composition,” U.S. Patent 5,736,666, April 7, 1998.


back to Caltech Research