Keyboard animation from midi file

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)

A keen SWiSH Max user, Lagnajeet Pradhan, has created a novel animated keyboard in SWiSH Max3. He has also authored tools (php or .exe file) that can analyze a dual channel midi file and create Max script to animate the keys. Once the script is created, it can be pasted directly into the script panel. Check it out!

The SWiSH Max .swi file as well as the tools to create the script from the midi file can be found on his website:

The c++ script authoring program can be downloaded from:

A more detailed video showing the steps can be found here including splitting a midi file into left and right channels (assumes that you have Cakewalk).

I hope the midi enthusiasts among you enjoy this novel approach in animating your files.

Our thanks to Lagnajeet who has given us permission to publish this article.


The php script assumes a frame rate of 25fps.

The midi file is assumed to be split into left and right channels. If this is not the case the detail movie demonstrates how this can be done using Cakewalk (A commonly used proprietary midi editor / recorder).

If using the php tool, the SWiSH Max script is written to a file Script.txt that is created on the server.

I have seen that the script sometimes becomes un-synchronized with the music. I assume this may be due to multiple time signatures in the midi file.

If you copy / paste the script directly from the php page instead of downloading the Script.txt file, you must insert line feeds before pasting into SWiSH Max.

As the generated script can be very large, you may experience performance issues when editing the script in Max3 / Max4.

You can convert a midi file to a mp3 file by playing the midi file in Windows Media player and recording the output using Audacity (2.0 or later) and its Stereo Mix input. Remember to turn off applications that can make sounds e.g.  email, skype. Otherwise, these noises may appear in your recording.

Tags: ,

Comments are closed.