EchoNest Tempo Plugin


A newer Echo Nest Plugin is available that supersedes this plugin. In addition to the tempo, the new plugin can fetch the Echo Nest’s full complement of acoustic attributes. This older tempo-specific plugin is deprecated.

The echonest_tempo plugin fetches and stores a track’s tempo (the “bpm” field) from the Echo Nest API.

Installing Dependencies

This plugin requires the pyechonest library in order to talk to the EchoNest API.

There are packages for most major linux distributions, you can download the library from the Echo Nest, or you can install the library from pip, like so:

$ pip install pyechonest


Beets includes its own Echo Nest API key, but you can apply for your own for free from the EchoNest. To specify your own API key, add the key to your configuration file as the value for apikey under the key echonest_tempo like so:

    apikey: YOUR_API_KEY

In addition, the autofetch config option lets you disable automatic tempo fetching during import. To do so, add this to your config.yaml:

    auto: no

Fetch Tempo During Import

To automatically fetch the tempo for songs you import, just enable the plugin by putting echonest_tempo on your config file’s plugins line (see Plugins). When importing new files, beets will now fetch the tempo for files that don’t already have them. The bpm field will be stored in the beets database. If the import.write config option is on, then the tempo will also be written to the files’ tags.

This behavior can be disabled with the autofetch config option (see below).

Fetching Tempo Manually

The tempo command provided by this plugin fetches tempos for items that match a query (see Queries). For example, beet tempo magnetic fields absolutely cuckoo will get the tempo for the appropriate Magnetic Fields song, beet tempo magnetic fields will get tempos for all my tracks by that band, and beet tempo will get tempos for my entire library. The tempos will be added to the beets database and, if import.write is on, embedded into files’ metadata.

The -p option to the tempo command makes it print tempos out to the console so you can view the fetched (or previously-stored) tempos.