BEATS Drum Machine

BEATS is a command-line drum machine written in pure Ruby. Feed it a song notated in YAML, and it will produce a precision-milled *.wav file of impeccable timing and feel. Here's an example song:

  Tempo: 120
    - Verse:   x2
    - Chorus:  x4
    - Verse:   x2
    - Chorus:  x4
    - bass:       sounds/bass.wav
    - snare:      sounds/snare.wav
    - hh_closed:  sounds/hh_closed.wav
    - agogo:      sounds/agogo_high.wav

  - bass:             X...X...X...X...
  - snare:            ..............X.
  - hh_closed:        X.XXX.XXX.X.X.X.
  - agogo:            ..............XX

  - bass:             X...X...X...X...
  - snare:            ....X.......X...
  - hh_closed:        X.XXX.XXX.XX..X.
  - sounds/tom4.wav:  ...........X....
  - sounds/tom2.wav:  ..............X.

And here's what it sounds like after getting the BEATS treatment. What a glorious groove!

Current Status

The latest stable version of BEATS is 1.2.3, released on December 31, 2011. This is a minor release which includes two improvements:

  • Bug fix: You can now use ~ in sound file paths, and it will correctly expand to your home folder. (At least on UNIX OSes, I'm not sure if that works on Windows).
  • The new --path option allows setting the base path from which relative sound file paths are searched for.


To install the latest stable version (1.2.3) from, run the following from the command line:

gem install beats

Note that if you are installing using the default version of Ruby that comes with MacOS X, you might get a file permission error. If that happens, use sudo gem install beats instead. If you are using RVM, plain gem install beats should work fine.

Once installed, you can then run BEATS from the command-line using the beats command.

BEATS is not very useful unless you have some sounds to use with it. You can download some example sounds from


BEATS runs from the command-line. Run beats -h to see the available options. For more detailed instructions, visit on the BEATS Wiki.

The BEATS wiki also has a Getting Started tutorial which shows how to create an example beat from scratch.

Found a Bug? Have a Suggestion? Want to Contribute?

Contact me (Joel Strait) by sending a GitHub message or opening a GitHub issue.


BEATS is released under the MIT license.