Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Kinetic Typography Generation
JavaScript CoffeeScript Ruby Shell
Branch: master
Pull request Compare This branch is 71 commits ahead, 3 commits behind jgetto:master.


Kinetic is a web application that uses The Echo Nest's API to generate kinetic typographic visualization of user-specified text to conform with a selected piece of music. Kinetic was created as part of Music Hack Day 2011 in Boston (Nov. 5-6).


Kinetic Typography is the art of animating dull, static text to give it more emotional power. Kinetic makes the process of generating kinetic typography really easy. You choose a piece of music, write or paste in a piece of text, and our web app does the rest, animating the words along with the music. You can then share the visualization with your friends, using a simple url.


We will have an instance of Kinetic running on Heroku soon, and you will be able to see some awesome examples. In the meantime, your best bet is to install and serve Kinetic locally.



You will need Ruby 1.8.7 and Rails 3.0.5. We suggest that you get those using bash < <(curl -s rvm install 1.8.7 rvm --default use 1.8.7 gem install rails

All of the javascript is written in coffee script, which you can install using the instructions at

Cloning the Repo:

If you have git installed, you can run git clone git:// otherwise, you can download the repository manually.

Installing required gems

Go into the top level directory and run the following commands: gem install bundle # one time command bundle install # this will automatically install all of the needed gems

Compiling to javascript

cake build # use this to compile the coffee script files

cake watch # use this after you have compiled for the first time to build # continuously, when the .coffee files change


Make sure that you are connected to the internet so that the Echo Nest API requests will work.

Then go into the top level directory and run rails server

Then open a browser and visit "localhost:3000"

Something went wrong with that request. Please try again.