C++ library for audio and music analysis, description and synthesis, including Python bindings
AGPL-3.0 License
Essentia 2.1 beta5 is our current preliminary version of the forthcoming 2.1 release. This pre-release includes the following changes:
Algorithms updates and bug-fixes
Fix the slaneyMel
scale implementation in MelBands and MFCC (#849). Introduced in 2.1-beta4, it was erroneously computing the HTK Mel scale. Set htkMel
as the default scale to ensure backward compatibility with all previous versions of MelBands/MFCC.
New option unit_tri
for triangle area normalization in MelBands, MFCC, and TriangularBands.
New parameter silenceThreshold
in MFCC and GFCC. Set default threshold to 1e-10
(#543).
TriangularBands: faster unit-sum normalization and an improved check for insufficient spectrum resolution (#142).
ConstantQ and the related Chromagram and SpectrumCQ are reimplemented from scratch and now function correctly. The maxFrequency
parameter is replaced by numberBins
.
New negativeFrequencies
parameter in FFTC to include negative frequencies in the output.
New normalize
parameter for IFFT size normalization.
FFTC now supports KissFFT and Accelerate.
PoolAggregator: new aggregation method last
to get the last value. Fix possible nan/inf values in kurtosis and skewness (#689). Apply aggregation for pool values that contain only one vector too.
New checkRange
parameter in Trimmer and StereoTrimmer.
PitchFilter: improve consistency between input and output stream types (#674).
PitchMelodia: fix missing output pitchConfidence
in streaming mode.
MultiPitchMelodia: peakFrameThreshold
and peakFrameThreshold
parameters now work correctly (they were overridden by hardcoded values).
New tolerance
parameter in PitchYinFFT. When the pitch confidence is lower than the tolerance value the output pitch is set to 0. A tolerance
of 1 disables this feature.
Fix occasional negative values output by Danceability (#483).
LoudnessEBUR128:
startFromZero
to zero-center the first window for loudness estimation.Fix a memory leak in AudioLoader.
BeatTrackerDegara output is now deterministic (#860).
ChordDetectionBeats: add new parameter chromaPick
and fix a beat segment indexing bug in the case of very close consecutive beats.
New minPeakDistance
parameter in PeakDetection.
Fix invalid memory access in PCA (#727).
Update Key and KeyExtractor algorithms with new pitch class profiles and new parameters for detuning correction and low-energy HPCP bin thresholding. Use the new bgate
profile by default. Add spectral whitening step to KeyExtractor. Change output key naming. Add a new function equivalentKey
to match between equivalent names.
Proper mutex implementation for all FFT* algorithms.
New algorithms
Updated music and sound feature extractors streaming_extractor_music
and streaming_extractor_freesound
. Both extractors are now also available as algorithms: MusicExtractor and FreesoundExtractor. New MusicExtractorSVM algorithm allows applying SVM models to the output of MusicExtractor.
Fix possible memory leaks in MusicExtractor
Proper logging for "out of memory" errors
Skip aggregation for some descriptors
Add audio length
to metadata and remove end_time
Add number of audio channels to metadata (number_channels
)
Better grouping of metadata related to audio analysis
Updated key/chords estimation parameters
Estimate key using three different key profiles (temperley
, krumhansl
, edma
)
Updated descriptors in MusicExtractor:
melbands128
high-resolution melbandshpcp_crest
bpm_histogram
stdev
aggregate statistics in addition to var
Updated descriptors in FreesoundExtractor
melbands96
high-resolution melbandsstdev
statisticfrequency_bands
bpm_confidence
when configured to use 'degara' for beat trackingspectral_contrast
and scvalleys
are now called spectral_contrast_coeffs
and spectral_contrast_valleys
for consistency with MusicExtractor
startFrame
and stopFrame
are now called sound_start_frame
and sound_stop_frame
New extractors
streaming_spectrogram
).Python bindings updates
essentia.pyutils
submodule provides useful functions for a number of use-cases (spectrograms, CQ-grams, batch processing with extractors, etc.)isSingleValue
check in Python.Build scripts updates
--prefix=$VIRTUAL_ENV
when inside a virtualenv.PKG_CONFIG_PATH
and add new flag --pkg-config-path
for custom lib paths.--only-python
to build Python extension separately from libessentia.essentia.pc
pkg-config file.Miscellaneous
Updated documentation, tutorials, and examples including a significant web redesign.
A usual assortment of code cleanup, updated and expanded unit tests, and better logging (more informative log and exception messages).
Published by dbogdanov over 6 years ago
This pre-release includes the following changes:
Improved algorithms
Updates to Mel and ERB energy band algorithms
New algorithms
Bug-fixes in algorithms:
Updates to Python wrapper:
Extractors:
Logging:
Build scripts updates:
Code cleanup and unit tests updates
Re-designed and expanded documentation:
Published by dbogdanov about 8 years ago
This pre-release includes the following changes:
--lightweight=LIBS
to specify dependencies to be included--include-algos=ALGOS
and --ignore-algos=ALGOS
to specify algorithms to be includedKnown issues:
Published by dbogdanov over 9 years ago
For post-release bugfixes use the 2.0 branch.
Ubuntu/Debian Libav compatibility:
Published by dbogdanov over 9 years ago
Changes:
--with-example
to build only specific examplesDependencies: Libav 9, Taglib 1.9
Ubuntu/Debian Libav/Taglib compatibility:
Published by dbogdanov over 10 years ago
Essentia 2.0.1:
streaming_extractor_archivemusic
extractor, see accuracies here)For post-release bugfixes (including Ubuntu 14.04 compatibility) use the 2.0.1 branch.
Ubuntu/Debian Libav compatibility: