Echo Nest Plugin

The echonest plugin fetches acoustic attributes from the Echo Nest. It automatically fills in the following attributes:

  • danceability
  • energy
  • liveness
  • loudness
  • speechiness
  • bpm

All attributes except bpm are stored in flexible attributes (i.e., not in files’ metadata). See the Echo Nest’s page on acoustic attributes for a detailed description. (Their name for bpm is tempo.)

Installing Dependencies

This plugin requires the pyechonest library in order to talk to the Echo Nest API. At least version 8.0.1 is required.

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

To transcode music for server-side analysis (optional, of course), install the ffmpeg command-line tool.

To get fingerprinting working, you’ll need to install the command-line codegen tool for ENMFP or Echoprint, the two fingerprinting algorithms supported by the Echo Nest. Please note that fingerprinting is not required if upload and convert is enabled, which is the default (but it can be faster than uploading).

Configuring

Beets includes its own Echo Nest API key, but you can apply for your own for free from the Echo Nest. 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:

echonest:
    apikey: YOUR_API_KEY

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

echonest:
    auto: no

The echonest plugin tries to upload files to the Echo Nest server if it can not be identified by other means. If you don’t want that, disable the upload config option like so:

echonest:
    upload: no

The Echo Nest server only supports a limited range of file formats. The plugin automatically converts unsupported files to ogg. If you don’t want that, disable the convert config option like so:

echonest:
    convert: no

To enable fingerprinting, you’ll need to tell the plugin where to find the Echoprint or ENMFP codegen binary. Use the codegen key under the echonest section like so:

echonest:
    codegen: /usr/bin/echoprint-codegen

Running Manually

In addition to running automatically on import, the plugin can also be run manually from the command line. Use the command beet echonest [QUERY] to fetch acoustic attributes for albums matching a certain query.