Ruby binding of the essentia library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Nicola Bernardini 671075f155 removed file created automatically from swig (obsolete) 3 years ago
ext removed file created automatically from swig (obsolete) 3 years ago
lib added initial draft of rice wrapping 4 years ago
spec freeze commit for a while with no development in sight 3 years ago
.gitignore intermediate 4 years ago
.gitmodules added more instructions to install 4 years ago
.rspec added int input; refactored io spec code 4 years ago
.ruby-gemset added full tests for strings and reals 4 years ago
.ruby-version added ParameterBase wrap 4 years ago
.travis.yml initialized repository 6 years ago
Gemfile further advances 6 years ago
LICENSE Initial commit 6 years ago
LICENSE.txt initialized repository 6 years ago intermediate 4 years ago
Rakefile added algorithm_factory (standard) - partially working 4 years ago moved TODO name 4 years ago
essentia_ruby.gemspec added initial draft of rice wrapping 4 years ago


Essentia is an Free Software library and tools for audio and music analysis, description and synthesis.

essentia-ruby is the ruby binding for this library, using the rice framework.


[PLEASE NOTE: the whole library is currently (26/1/2018) in the works. As such, almost all specs fail. Don't be surprised if they do. If you wish to help see below].


In order to link properly the development packages of the following libraries have to be found during compilation:

  • libsamplerate
  • libavcodec
  • libavformat
  • libavutil
  • libavresample
  • libyaml
  • libfftw3f
  • libtag (optional)


In order to make this work, you have to run the following command--line commands:

# this loads the submodule repositories
$ git submodule update --init 'ext/essentia_ruby/essentia'        # the actual essentia library; this takes quite a long while
$ git submodule update --init 'ext/essentia_ruby/essentia-audio'  # the audio test samples; this takes quite a long while
$ cd ext/essentia_ruby/essentia
$ ./waf configure [--library-type=static] [--build-type=release]
$ ./waf # this takes quite a while

After this, you have to compile the C++ part of the gem:

$ rake compile

After this you can run the tests to verify that everything is in place:

$ rake

If everything is ok you should be good to go.

In order to make something with this gem, you should:

  • add this line to your application's Gemfile:
gem 'essentia-ruby'
  • and then execute:
    $ bundle

Or install it yourself as:

    $ gem install essentia-ruby

Then you can do:

require 'essentia'

and boum, you have the whole library.


essentia-ruby has helpers that can be used as methods or functions to run the desired analysis algorithm. You are welcome to add more helpers.



  1. Please read here what the priorities in contributing are
  2. Fork it ([my-github-username]/essentia-ruby/fork )
  3. Create your feature branch (git checkout -b my-new-feature)
  4. Commit your changes (git commit -am 'Add some feature')
  5. Push to the branch (git push origin my-new-feature)
  6. Create a new Pull Request