👞 A JavaScript library for recording and comparing rhythms
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.



Build Status

A JavaScript library for recording and comparing rhythms. The project page lives here.


Tappy can be installed using npm, bower, or included from jsdelivr:

npm install tappy
bower install tappy
<script src="//cdn.jsdelivr.net/tappy/latest/mainfile"></script>

The library uses a universal module definition, so it should work with whatever system you're using.


For current docs, please visit the project page.


Pull-requests to the /app and /test directories are welcome. Please create an issue if you plan on adding features, as it might be better suited to a plugin.

Please squash changes down to a single commit before making a pull-request.

Building the library

If you don't have gulp, you'll have to install it:

npm install -g gulp

After running

npm install

in the main directory, running


will watch the /app directory and build any changes to /dist. It also runs changes through test/test.js.


Pull requests must adhere to the following code style guidelines, influenced heavily by idiomatic.js:

  • Put a space before the parens following if (), else if (), for (), while (), try (), and function () statements. Do not add padding spaces within these parens.
  • Put a space between closing braces ) and opening curly braces {.
  • Add padding spaces to curly braces that self-close on a single line: var littleObject = { name: 'tiny' };. Empty object literals do not require a space: {}.
  • Function definitions go at the top of their scope, followed immediately by vars.
  • If multiple lines are required for variable declarations, each new line should have its own var statement.
  • Indent using tabs. No trailing whitespace.
  • Line-length limit of 80 characters, with a tab-width of 4.
  • If statements have to be broken across lines, end lines with an operator:
// example
var reallyReallyReallyLongLine = 'Zero Cool' + ', Acid Burn' + ', Lord Nikon' +
    	', The Phantom Phreak' + ', Cereal Killer' + ', The Plague' +
    	', that other kid...';
  • When aligning statements across lines, use spaces if alignment should be locked to a specific character length. in the previous example, four spaces were used before the indenting tab to ensure tabs always started after var.
  • Gulp will automatically lint everything through jshint. Don't make it complain.


###Lyrics game A music game: tap the rhythm of the lyrics displayed.

###Fingerprint A simple in-browser keystroke dynamics trainer.

If you've built something with Tappy, let me know! I'd love to add it to this list.


Licensed under MIT. Created by rileyjshaw.