teragonaudio / BeatCounter

Detect tempo in beats per minute (BPM)
http://teragonaudio.com/BeatCounter.html
GNU General Public License v2.0
83 stars 13 forks source link

BeatCounter

BeatCounter is a simple plugin designed to facilitate beatmatching software and turntables. It displays the current tempo in beats per minute (BPM), and an accumulated average over the last few seconds. BeatCounter is the perfect tool for DJ's that want to integrate computer effects with turntables or a live band.

BeatCounter User Interface

Parameters

BeatCounter has the following controls available in its plugin editor window:

Limitations

As BeatCounter was designed for beat-matching electronic dance music with a host sequencer, it performs particularly well under these settings but may not yield accurate results with other types of music. BeatCounter's calculation algorithm assumes a 4/4 tempo, and expects either 2 or 4 beats (kick drums) to be present every bar.

So for standard techno and house tracks, BeatCounter should be quite accurate. BeatCounter has an internal range of 60-180 BPM, and it will double the BPM for slow but consistent tempos. That is, if a song is 120BPM but has a kick on every second beat (ie, on the 2/4), this would technically be 60BPM. However, BeatCounter will double this value and display 120BPM, which is correct in most cases.

This means that BeatCounter will not do well with unconventional beat patterns. A tap BPM feature would be necessary to provide tempo hints, this feature is being considered for a future version of the software.

Sending MIDI Beat Clock to Synchronize a Host

An oft-requested feature for BeatCounter is the ability to send MIDI beat clock so that a host could sync directly to this tempo. Unfortunately this is not possible with the plug-in version of BeatCounter. Although there is no technical limitation that would prohibit a host from syncing to MIDI beat clock, no sequencer actually does this. That is, all popular sequencers (including Ableton Live, Logic Pro X, and Cubase) ignore MIDI beat clock messages sent from a plugin and cannot synchronize to this.

It would however be possible to send beat clock messages from a standalone application, this is a feature that is being considered but might be limited to Mac OSX and Linux only, due to the nature of virtual MIDI devices on Windows.