@dbogdanov dbogdanov released this May 23, 2018 · 431 commits to master since this release

Assets 2

Essentia 2.1 beta4 is our current preliminary version of the forthcoming 2.1 release. This pre-release includes the following changes:

  • Improved algorithms

    • AudioLoader now supports audio sources with multiple audio streams (new parameter 'audioStream')
    • PoolAggregator now outputs stdev in addition to var (#342)
    • SpectralContrast: Improve precision for computation of subband bin intervals
    • Danceability now also outputs a DFA exponent vector
    • HPCP can now optionally apply unit sum normalization (#348)
    • HPCP: 'splitFrequency' parameter is now called 'bandSplitFrequency'
    • LoudnessEBUR128: Warn on empty input in the streaming mode
  • Updates to Mel and ERB energy band algorithms

    • Add support for extracting MelBands and MFCCs 'the htk way'
    • Add support for DCT type III in DCT algorithm
      • New parameter 'dctType' in DCT, MFCC and GFCC
      • New 'liftering' parameter in DCT and MFCC
    • New parameters 'normalize', 'type', 'scale' and 'weighting' in MelBands and MFCC
    • New 'type' parameter in GFCC
    • New 'logType' parameter in MFCC, GFCC
    • New 'log' parameter in TriangularBands and MelBands
    • ERBBands: 'type' parameter value "energy" is now called "power"
    • TriangularBands is now faster
  • New algorithms

    • SpectrumToCent for computing cent scale from frequency bins
    • New algorithm IDCT for inverse DCT
    • New algorithm SpectrumCQ
  • Bug-fixes in algorithms:

    • MelBands and TriangularBands: Add checks for insufficient spectrum resolution (#142)
    • Fix PitchYin out of range error (#376)
    • Fix Inf values in OddToEvenHarmonicEnergyRatio
    • Fix reset() in LowLevelSpectralExtractor and LowLevelSpectralEqloudExtractor
    • Fix occasional exception in BeatsLoudness (#199)
    • Danceability: Fix NaN danceability value occurring on very short input signals
    • Fix memory leak in MelBands
    • Fix memory bug in Vibrato
    • SpectralContrast: Force non-zero 'lowFrequencyBound' parameter to avoid division by zero (#568)
    • AudioLoader: Fix memory bug on exceptions while opening an audio file in AudioLoader
  • Updates to Python wrapper:

    • FrameGenerator now inherits the default parameters from FrameCutter
    • FrameGenerator now has a new method frame_times() to compute frame positions in time
    • Fix array memory corruption when passing NumPy array views to Essentia algorithms (#240)
    • Fix memory deallocation for streaming algorithms to avoid a memory leak
  • Extractors:

    • Freesound extractor now stores all results in json
  • Logging:

    • Remove colors in log messages when piped to file; do not print colors on Windows
  • Build scripts updates:

    • Update waf to 1.9.5
    • Update script for computing algorithm dependencies
  • Code cleanup and unit tests updates

  • Re-designed and expanded documentation:

    • Updated installation instructions
    • Reorganized and improved Python tutorials. Notebook tutorials are now also rendered as html
    • Updated algorithm descriptions
    • Added examples of industrial applications and academic studies using Essentia

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

Assets 2

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 OddToEvenHarmonicEnergy
    • 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)

@dbogdanov dbogdanov released this Mar 26, 2015 · 1375 commits to master since this release

Assets 2


  • 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
Sep 23, 2014
Essentia 2.1 beta1

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

Assets 2

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
Oct 28, 2013


Essentia 2.0 release

@dbogdanov dbogdanov released this Mar 31, 2015 · 1790 commits to master since this release

Assets 2
  • 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