0.4.0 • Published 6 years ago

beats.js v0.4.0

Weekly downloads
3
License
ISC
Repository
github
Last release
6 years ago

beats.js

A beat detection and synchronization library.

Usage

Basic usage, load an audio file and attempt to autodetect BPM:

  beats.beatSync('/audio/music.mp3').then((music) => {
    // Set up your beat callbacks here, and then start playback
    music.play();
  });

You can also pass an options object that can contain the following fields.

ParameterDescription
audioUrlURL to the audio file to be loaded. Supported formats are going to be whatever the browsers <Audio> tag supports.
bpmIf beats is unable to autodetect the BPM correctly, you can pass a value here instead and it will not attempt autodetection.
offsetA decimal number indicating the beat offset (in seconds, floating point). This will need to be tweaked carefully, and will need to be different for different machines. Ideally, you'd allow the user to tweak their offset to match whatever delays their audio drivers introduce.

The returned music object has the following methods you can use to set up syncing.

MethodParametersDescription
addBeatCallbackbeatNumber (int), callbackAdd a callback to be fired every time the numbered beat is played.
addEveryBeatCallbackcallbackAdd a callback to be fired on every beat
addOneshotCallbackbeatNumber, callbackAdd a callback to be fired the first time the numbered beat is played.
addFractionalBeatCallbackbeatNumber (float), callback, dataAdd a callback to be fired every time the numbered beat, indicated as a float, is played. This is useful when you need sub-beat precision. addLyricsCallback uses this function internally.
addLyricsCallbackbeatNumber (int), lyrics, callback, offset (float)Add a callback to be fired every time a new lyrics segment is played. The lyrics start at the beat indicated by the first parameter. Lyrics are specified as a string with tokens inserted into it to separate syllables. The special tokens are #¤%& and they represent a beat, a half-beat, a quarter beat and an eighth of a beat, respectively in order. Here's an example of a lyrics segment: ###¤What's# crac¤kin'?¤&Who¤ ya¤ mac¤kin'?¤%What¤&cha¤ do¤in'?¤.
getCurrentBeatReturns the current active beat as an integer.
getCurrentBeatFloatReturns the current active beat as a float.
getTimePerBeatReturns the duration of a single beat, in seconds.
getTimeToNearestBeatReturns the time to the closest beat right now. Can be either negative or positive, depending on whether or not the closest beat is forward of backward in time. Useful when syncing.

See the demos inside the repo for further usage examples.

0.4.0

6 years ago

0.3.5

6 years ago

0.3.4

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.1

6 years ago

0.2.0

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago