The Cellist Animation Strategies
of the Interrupting Cows

Who we are:

The Animated Cellist consists of four strings (representing the cello) and an animated arm. When activated, the "cellist" plays Suite No. 4 in Eb major - 6th Movement by Johann Sebastian Bach.

How we do it:

We read in and parse an abc file. An abc file is a human readable form of midi (created from midi files using midi2abc). This information is then used to move the cellist's fingers to the correct position. The cellist knows the position for each note, but must be told which note to go to next. Interpolation is used to smooth the movement between the notes. The finger, wrist, elbow, and shoulder joint positions are found using inverse kinematics. The inverse kinematics are done through a simplified form of simulated annealing.

Problems we encountered:

Simulated annealing is hard to tune. We were getting incorrect joint angles and solutions that were not visually appealing.
Interpolating from a joint angle of 90 degrees to the same angle at 450 degrees looks really silly. We then discovered that joint limitations are very important.
Animations are more exciting with a time step of 1/30.0 instead of 1/30.
General delirium (especially for Gary :) )
Rendering takes way too long for alison's patience.


The cellist sucessfully plays Suite No. 4 in Eb major - 6th Movement by Johann Sebastian Bach, but expanding your musical tastes is not recommended. The tips of his fingers light up when they land on the correct string.

How this may be improved:

To accept any abc file.

The Code:

Animated Cellist

The Creators:

The algorithm for the Animated Cellist was developed by Gary Yngve and Alison Smith, junior computer science majors at Georgia Tech.
Gary may be contacted at
Alison may be contacted at

Back to the Interrupting Cows' Homepage