Essentia 2.1 beta3

@dbogdanov dbogdanov released this Sep 29, 2016 · 184 commits to master since this release

Essentia 2.1 beta3 is our current preliminary version of the forthcoming 2.1 release and is the version recommended to install. This pre-release includes the following changes:

  • Build script updates:
    • Cross-compilation for iOS and Android
    • Support for javascript using Emscripten
    • Updated dependencies in static extractors (LibAv 11.2, Taglib 1.10)
    • Fixed cross-compilation for Windows
    • Homebrew formula for easy installation on OSX
    • Updated Debian packaging
    • All dependencies are now optional. Algorithms and examples relying on missing dependencies will be ignored.
    • New flags for building lightweight versions of Essentia
      • --lightweight=LIBS to specify dependencies to be included
      • --include-algos=ALGOS and --ignore-algos=ALGOS to specify algorithms to be included
  • New algorithms:
    • SuperFlux algorithm for real-time onset detection (SuperFluxExtractor, SuperFluxNovelty)
    • Algorithms for sound modeling
      • Overlap-add (OverlapAdd)
      • Sine model analysis/synthesis (SineModelAnal, SineModelSynth)
      • Sine subtraction (SineSubtraction)
      • Sinusoidal plus Residual model analysis/synthesis (SprModelAnal, SprModelSynth)
      • Melody Analysis (monophonic/predominant)
      • HarmonicMask
      • Signal resampling (ResampleFFT)
    • New pitch-related algorithms
      • Multi-pitch estimation in polyphonic music (MultiPitchKlapuri, MultiPitchMelodia)
      • Adaptation of Melodia algorithm for monophonic signals (PitchMelodia)
      • Yin pitch detection algorithm (PitchYin)
      • Pitch contour segmentation into notes (PitchContourSegmentation)
      • Vibrato detection (Vibrato)
    • BPM estimation on loops (PercivalEnhanceHarmonics, PercivalEvaluatePulseTrains, LoopBpmConfidence, LoopBpmEstimator, PercivalBpmEstimator)
    • STFT on complex inputs ( FFTC)
    • ConstantQ and Chromagram (still in experimental stage)
    • TriangularBands
    • Lightweight spectral centroid implementation (SpectralCentroidTime)
    • Chords detection on beat segments (ChordsDetectionBeats)
    • VectorRealAccumulator
  • Improved algorithms:
    • LoudnessEBUR128 algorithms are now finalized (includes bug-fixes)
    • FFT now supports KissFFT and Accelerate FFT libraries as an alternative to FFTW
    • New profiles for Key estimation (including profiles for electronic music)
    • New 'generalized' parameter in Autocorrelation algorithm
    • New 'scale' and 'shift' parameters in UnaryOperator algorithm
    • New 'normalized' parameter in Windowing algorithm
    • New 'inputSize' parameter in GFCC algorithm
    • Added support for 8kHz for EqualLoudness algorithm
    • LogAttackTime now outputs attack times
    • BpmHistogramDescriptors now outputs a complete histogram
    • ChordsDescriptors now throws exception on incorrect chords
    • Refactored AudioLoader and AudioWriter algorithms. Use libavresample, remove support for libswresample
    • Rename PitchFilterMakam to PitchFilter. Allow filtering negative energy values. Remove optional 'octaveFilter' parameter
    • Rename PredominantMelody algorithm to PredominantPitchMelodia
  • Bug-fixes:
  • Fix wrong behavior of HarmonicPeaks that was indirectly affecting results in HPCP, Key, Tristimulus and OddToEvenHarmnonicEnergy
  • Fixed filter coefficients in BandReject and BandPass
  • Fixed weightings in NoveltyCurve
  • Different key profiles in Key streaming algorithm now work correctly
  • Bug fixes in Envelope, TonicIndianArtMusic, RhythmExtractor2013, PitchYinFFT, BpmHistogramDescriptors, ReplayGain streaming
  • Updated extractors (including Freesound extractor)
  • Improved documentation
    • Fresh new design
    • Algorithms are now organized by categories.
    • Improved and rewritten algorithm descriptions
    • New python examples and tutorials
  • More minor fixes, improvements and code cleanup
  • Updated unit tests. Audio files for tests are now hosted in a separate repository

Known issues:

  • Some unit tests fail (#316)


Essentia 2.1 beta2

@dbogdanov dbogdanov released this Nov 19, 2014 · 898 commits to master since this release


  • Build scripts updates:
    • New scripts for static builds on Linux, OSX and (cross-compilation) Windows
    • New flag --with-example to build only specific examples
    • New git commit SHA hash value accessible via Essentia library API for better versioning
  • Algorithm updates:
    • AudioLoader now outputs codec and bitrate, and computes md5 hash values over undecoded audio
    • MetadataReader now uses new TagLib 1.9 API and is able to read any tags
    • YamlInput now supports json
    • New Entropy algorithm
    • EffectiveDuration now accepts a threshold parameter
    • Fixed incorrect computation of onset rate in OnsetRate
    • New algorithm LoudnessEBUR128 for measuring loudness according to the EBU R128 standard (still in experimental stage)
    • New BinaryOperator algo
    • PitchYinFFT algorithm now includes peak interpolation
  • Revised and updated extractors:
    • Revised, refactored and expanded music extractor (streaming_extractor_music) including new functionality and descriptors
    • Updated Freesound extractor, including new descriptors
  • Some updates in core Essentia code
  • Updated documentation and examples
  • Bugfixes and unit tests updates

Dependencies: Libav 9, Taglib 1.9

Ubuntu/Debian Libav/Taglib compatibility:

  • Debian Jessie - the required package versions are already in the repository
  • Debian Wheezy - install libav/libtag1-dev packages from wheezy-backports repository
    • libav 6:10.1
    • libtag1-dev 1.9.1
  • Ubuntu Trusty (14.04 LTS), Utopic (14.10) and Vivid (15.04) - the required package versions are already in the repository


Essentia 2.0.1

@dbogdanov dbogdanov released this Feb 13, 2014 · 10 commits to 2.0.1 since this release

Essentia 2.0.1:

  • Added pre-trained high-level classifier models for genres, moods, rhythm and instrumentation (to be used with streaming_extractor_archivemusic extractor, see accuracies here)
  • Fixed scheduler in streaming mode
  • Fixed compilation with clang/libc++/c++11
  • PitchYinFFT now supports parabolic interpolation
  • Updated Vamp plugin
  • Updated documentation and tutorials
  • Minor bugfixes, more unittests, etc.

For post-release bugfixes (including Ubuntu 14.04 compatibility) use the 2.0.1 branch.

Ubuntu/Debian Libav compatibility:

  • Debian Wheezy - libav 6:0.8.17
  • Ubuntu Precise (12.04 LTS) - libav 4:0.8.17
  • Ubuntu Trusty (14.04 LTS) - libav 6:9.18


Essentia 2.0

@dbogdanov dbogdanov released this Oct 28, 2013 · 1313 commits to master since this release

  • First release to be publicly available as free software released under AGPLv3
  • Refactoring of the core API
    • fix small API annoyances for the standard mode
    • streaming mode refactor. It is now much better defined, using sound computer science techniques (The visible network is a directed acyclic graph, the composites have better defined semantics, and the order of execution of the algorithms is the topological sort of the transitive reduction of the visible network after the composites have been expanded). In particular, the scheduler that runs the algorithms in the streaming mode is now a lot more correct, which permitted to clean all the small hacks that had accumulated in the algorithms themselves during the 1.x releases to compensate for the deficiencies of the initial scheduler.
  • New algorithms for onset detection, beat tracking and melody extraction
  • New and updated features extractors
  • Updated Vamp plugin
  • Much better documentation, more python examples
  • Bugfixes, more unittests, etc.

For post-release bugfixes use the 2.0 branch.

Ubuntu/Debian Libav compatibility:

  • Debian Wheezy - libav 6:0.8.17
  • Ubuntu Precise (12.04 LTS) - libav 4:0.8.17
  • Ubuntu Trusty (14.04 LTS) - libav 6:9.18