Title: Final Animation
Author: Nathan Cournia
Description: MIDI based procedural animation.
Institution: Clemson University
Class: CPSC808 - Computer Animation
Tools: Maya 4.0, Final Cut Pro 3, C
Construction Time: 20 Hours
Date Completed: May 6, 2002


My goal in this project was to be able to drive an animation through the note and instrument information found in a Musical Instrument Digital Interface (MIDI) file. To achieve this I wrote a program (based on the Timidity library) which would take a MIDI file as input and output a Maya Embedded Language (MEL) script. The MEL script contains function stubs (note_on() / note_off()) which the MEL prorammer must define. The note_on() / note_off() functions are passed the following information:

  • Frame that the note was hit/released.
  • Instrument that was played.
  • How hard the note was played (velocity).
  • The note played (Ex. Middle C).

    With this simple interface the MEL programmer is able to easily create amazing effects.


    The first animation I created used Beethoven's "Moonlight Sonata" as input to drive a Michael Jacksonisque keyboard:


    quicktime movie (221M)

    divx movie (62M)


    For the second animation I teamed up with Karl Rasche. Karl wrote a wave and ripple generation program which we then animated based on Granados' "Oriental":


    quicktime movie (178M)

    divx movie (9M)


    Maya 4.0 Scene File: cournia_piano.mb (611k)
    midi2mel (Source): cournia_midi2mel-20020506.tar.gz (15M)

    Update March 12, 2005: Over the past 3 years I've received e-mails asking for more information about midi2mel, in particular, how to write MEL scripts that can use midi2mel's output. Below is a link to the MEL scripts we used to create the animations above. Good luck with them:

    Maya 4.0 Scene File: midi_extra.tar.gz (8k)
  •