Git Product home page Git Product logo

beats's Introduction

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:

Song:
  Tempo: 105
  Flow:
    - Verse:  x4
    - Chorus: x4
  Kit:
    - bass:     house_2_1.wav
    - snare:    roland_tr_909_2.wav
    - hihat:    house_2_5.wav
    - cowbell:  big_beat_5.wav
    - deep:     house_2_2.wav  

Verse:
  - bass:     X..X...X..X.....
  - snare:    ....X.......X...
  - hihat:    ..X...X...X...X.

Chorus:
  - bass:     X..X...X..X.....
  - snare:    ....X.......X...
  - hihat:    XXXXXXXXXXXXX...
  - cowbell:  ....XX.X..X.X...
  - deep:     .............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.3.0, released on March 4, 2013.

This release is for all you swingers out there. A new Swing declaration in the song header will cause the song to be played with either a swung 8th note or swung 16th note rhythm. For example, take this song:

Song:
  Tempo: 120
  Flow:
    - Verse: x4

Verse:
- bass.wav:   X...X...X...X...
- snare.wav:  ....X.......X...
- hihat.wav:  X.X.X.X.X.X.X.X.

It will sound like this.

You can add an 8th note swing like this (notice the 3rd line, everything else is the same):

Song:
  Tempo: 120
  Swing: 8   # Or, 16
  Flow:
    - Verse: x4

Verse:
- bass.wav:   X...X...X...X...
- snare.wav:  ....X.......X...
- hihat.wav:  X.X.X.X.X.X.X.X.

And it will now sound like this.

This release also adds support for fractional tempos. For example:

Song:
  Tempo: 100.5
  Flow:
    - Verse: x4

This release also includes a small bug fix. When you run the beats command with no arguments, it now displays the help screen, rather than an error message.

Installation

To install the latest stable version (1.3.0) from rubygems.org, 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 http://beatsdrummachine.com.

Usage

Beats runs from the command-line. Run beats -h to see the available options. For more detailed instructions, visit https://github.com/jstrait/beats/wiki/Usage on the Beats Wiki.

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

Local Development

First, install the required dependencies:

bundle install

To run Beats locally, use bundle exec and run bin/beats, to avoid using any installed gem executable. For example:

bundle exec bin/beats -v

To run the tests:

bundle exec rake test

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

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

License

Beats is released under the MIT license.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.