Changelog¶
v0.6.0¶
2018-02-17
- Bug fixes
- #663 fixed alignment errors in feature.delta. Brian McFee
- #646 effects.trim now correctly handles all-zeros signals. Rimvydas Naktinis
- #634 stft now conjugates the correct half of the spectrum. Brian McFee
- #630 fixed display decoration errors with cqt_note mode. Brian McFee
- #619 effects.split no longer returns out-of-bound sample indices. Brian McFee
- #616 Improved util.valid_audio to avoid integer type errors. Brian McFee
- #600 CQT basis functions are now correctly centered. Brian McFee
- #597 fixed frequency bin centering in display.specshow. Brian McFee
- #594 dtw fixed a bug which ignored weights when step_sizes_sigma did not match length. Jackie Wu
- #593 stft properly checks for valid input signals. Erik Peterson
- #587 show_versions now shows correct module names. Ryuichi Yamamoto
New features
- Other changes
- #674 Improved write_wav documentation with cross-references to soundfile. Brian McFee
- #671 Warn users when phase information is lost in dB conversion. Carl Thome
- #666 Expanded documentation for load’s resampling behavior. Brian McFee
- #656 Future-proofing numpy data type checks. Carl Thome
- #642 Updated unit tests for compatibility with matplotlib 2.1. Brian McFee
- #637 Improved documentation for advanced I/O. Siddhartha Kumar
- #636 util.normalize now preserves data type. Brian McFee
- #632 refined the validation requirements for util.frame. Brian McFee
- #628 all time/frequency conversion functions preserve input shape. Brian McFee
- #625 Numba is now a hard dependency. Brian McFee
- #622 hz_to_midi documentation corrections. Carl Thome
- #621 dtw is now symmetric with respect to input arguments. Stefan Balke
- #620 Updated requirements to prevent installation with (incompatible) sklearn 0.19.0. Brian McFee
- #609 Improved documentation for segment.recurrence_matrix. Julia Wilkins
- #598 Improved efficiency of decompose.nn_filter. Brian McFee
- #574 dtw now supports pre-computed distance matrices. Curtis Hawthorne
API changes and compatibility
- #627 The following functions and features have been removed:
- real= parameter in cqt
- core.logamplitude (replaced by amplitude_to_db)
- beat.estimate_tempo (replaced by beat.tempo)
- n_fft= parameter to feature.rmse
- ref_power= parameter to power_to_db
- The following features have been deprecated, and will be removed in 0.7.0:
- trim= parameter to feature.delta
- #616 write_wav no longer supports integer-typed waveforms. This is due to enforcing consistency with util.valid_audio checks elsewhere in the codebase. If you have existing code that requires integer-valued output, consider using soundfile.write instead.
v0.5.1¶
2017-05-08
- Bug fixes
New features
Other changes
- #569 feature.rmse now centers frames in the time-domain by default. Brian McFee
- #564 display.specshow now rasterizes images by default. Brian McFee
- #558 updated contributing documentation and issue templates. Brian McFee
- #556 updated tutorial for 0.5 API compatibility. Brian McFee
- #544 efficiency improvement in CQT. Carl Thome
- #523 support reading files with more than two channels. Paul Brossier
v0.5.0¶
2017-02-17
Bug fixes
- #371 preserve integer hop lengths in constant-Q transforms. Brian McFee
- #386 fixed a length check in
librosa.util.frame. Brian McFee- #416
librosa.output.write_wavonly normalizes floating point, and normalization is disabled by default. Brian McFee- #417
librosa.cqtoutput is now scaled continuously across octave boundaries. Brian McFee, Eric Humphrey- #450 enhanced numerical stability for
librosa.util.softmask. Brian McFee- #467 correction to chroma documentation. Seth Kranzler
- #501 fixed a numpy 1.12 compatibility error in
pitch_tuning. Hojin Lee
New features
- #323
librosa.dtwdynamic time warping. Stefan Balke- #404
librosa.cachenow supports priority levels, analogous to logging levels. Brian McFee- #405
librosa.interp_harmonicsfor estimating harmonics of time-frequency representations. Brian McFee- #410
librosa.beat.beat_trackandlibrosa.onset.onset_detectcan return output in frames, samples, or time units. Brian McFee- #413 full support for scipy-style window specifications. Brian McFee
- #427
librosa.saliencefor computing spectrogram salience using harmonic peaks. Rachel Bittner- #428
librosa.effects.trimandlibrosa.effects.splitfor trimming and splitting waveforms. Brian McFee- #464
librosa.amplitude_to_db,db_to_amplitude,power_to_db, anddb_to_powerfor amplitude conversions. This deprecateslogamplitude. Brian McFee- #471
librosa.util.normalizenow supportsthresholdandfill_valuearguments. Brian McFee- #472
librosa.feature.melspectrogramnow supportspowerargument. Keunwoo Choi- #473
librosa.onset.onset_backtrackfor backtracking onset events to previous local minima of energy. Brian McFee- #479
librosa.beat.temporeplaceslibrosa.beat.estimate_tempo, supports time-varying estimation. Brian McFee
Other changes
- #352 removed
seabornintegration. Brian McFee- #368 rewrite of the
librosa.displaysubmodule. All plots are now in natural coordinates. Brian McFee- #402
librosa.displaysubmodule is not automatically imported. Brian McFee- #403
librosa.decompose.hpssnow returns soft masks. Brian McFee- #407
librosa.feature.rmsecan now compute directly in the time domain. Carl Thome- #432
librosa.feature.rmserenamesn_ffttoframe_length. Brian McFee- #446
librosa.cqtnow disables tuning estimation by default. Brian McFee- #452
librosa.filters.__float_windownow always uses integer length windows. Brian McFee- #459
librosa.loadnow supportsres_typeargument for resampling. CJ Carr- #482
librosa.filters.melnow warns if parameters will generate empty filter channels. Brian McFee- #480 expanded documentation for advanced IO use-cases. Fabian Robert-Stoeter
API changes and compatibility
- The following functions have permanently moved:
core.peak_peaktoutil.peak_pickcore.localmaxtoutil.localmaxfeature.synctoutil.sync
- The following functions, classes, and constants have been removed:
core.ifptrackfeature.chromagramfeature.logfsgramfilters.logfrequencyoutput.frames_csvsegment.structure_Featuredisplay.time_ticksutil.FeatureExtractorutil.buf_to_intutil.SMALL_FLOAT
- The following parameters have been removed:
librosa.cqt: resolutionlibrosa.cqt: aggregatefeature.chroma_cqt: modeonset_strength: centering
- Seaborn integration has been removed, and the
displaysubmodule now requires matplotlib >= 1.5.
- The use_sns argument has been removed from display.cmap
- magma is now the default sequential colormap.
- The
librosa.displaymodule has been rewritten.
librosa.display.specshownow plots using pcolormesh, and supports non-uniform time and frequency axes.- All plots can be rendered in natural coordinates (e.g., time or Hz)
- Interactive plotting is now supported via ticker and formatter objects
librosa.decompose.hpsswith mask=True now returns soft masks, rather than binary masks.librosa.filters.get_windowwrapsscipy.signal.get_window, and handles generic callables as well pre-registered window functions. All windowed analyses (e.g.,stft,cqt, ortempogram) now support the full range of window functions and parameteric windows via tuple parameters, e.g.,window=('kaiser', 4.0).stftwindows are now explicitly asymmetric by default, which breaks backwards compatibility with the 0.4 series.cqtnow returns properly scaled outputs that are continuous across octave boundaries. This breaks backwards compatibility with the 0.4 series.cqtnow uses tuning=0.0 by default, rather than estimating the tuning from the signal. Tuning estimation is still supported, and enabled by default for chroma analysis (librosa.feature.chroma_cqt).logamplitudeis deprecated in favor ofamplitude_to_dborpower_to_db. The ref_power parameter has been renamed to ref.
v0.4.3¶
2016-05-17
- Bug fixes
- #315 fixed a positioning error in
display.specshowwith logarithmic axes. Brian McFee - #332
librosa.cqtnow throws an exception if the signal is too short for analysis. Brian McFee - #341
librosa.hybrid_cqtproperly matches the scale oflibrosa.cqt. Brian McFee - #348
librosa.cqtfixed a bug introduced in v0.4.2. Brian McFee - #354 Fixed a minor off-by-one error in
librosa.beat.estimate_tempo. Brian McFee - #357 improved numerical stability of
librosa.decompose.hpss. Brian McFee
- #315 fixed a positioning error in
- New features
- #312
librosa.segment.recurrence_matrixcan now construct sparse self-similarity matrices. Brian McFee - #337
librosa.segment.recurrence_matrixcan now produce weighted affinities and distances. Brian McFee - #311
librosa.decompose.nl_filterimplements several self-similarity based filtering operations including non-local means. Brian McFee - #320
librosa.feature.chroma_censimplements chroma energy normalized statistics (CENS) features. Stefan Balke - #354
librosa.core.tempo_frequenciescomputes tempo (BPM) frequencies for autocorrelation and tempogram features. Brian McFee - #355
librosa.decompose.hpssnow supports harmonic-percussive-residual separation. CJ Carr, Brian McFee - #357
librosa.util.softmaskcomputes numerically stable soft masks. Brian McFee
- #312
- Other changes
librosa.cqt,librosa.hybrid_cqtparameter aggregate is now deprecated.- Resampling is now handled by the
resampylibrary librosa.get_durationcan now operate directly on filenames as well as audio buffers and feature matrices.librosa.decompose.hpssno longer supportspower=0.
v0.4.2¶
2016-02-20
- Bug fixes
- Support for matplotlib 1.5 color properties in the
displaymodule - #308 Fixed a per-octave scaling error in
librosa.cqt. Brian McFee
- Support for matplotlib 1.5 color properties in the
- New features
- #279
librosa.cqtnow provides complex-valued output with argument real=False. This will become the default behavior in subsequent releases. - #288
core.resamplenow supports multi-channel inputs. Brian McFee - #295
librosa.display.frequency_ticks: liketime_ticks. Ticks can now dynamically adapt to scale (mHz, Hz, KHz, MHz, GHz) and use automatic precision formatting (%g). Brian McFee
- #279
- Other changes
v0.4.1¶
2015-10-17
- Bug fixes
- Improved safety check in CQT for invalid hop lengths
- Fixed division by zero bug in
core.pitch.pip_track - Fixed integer-type error in
util.pad_centeron numpy v1.10 - Fixed a context scoping error in
librosa.loadwith some audioread backends librosa.autocorrelatenow persists type for complex input
- New features
librosa.clickssonifies timed events such as beats or onsetslibrosa.onset.onset_strength_multicomputes onset strength within multiple sub-bandslibrosa.feature.tempogramcomputes localized onset strength autocorrelationlibrosa.display.specshownow supports*_axis='tempo'for annotating tempo-scaled datalibrosa.fmtimplements the Fast Mellin Transform
Other changes
- Rewrote
display.waveplotfor improved efficiencydecompose.deompose()now supports pre-trained transformation objects- Nullified side-effects of optional seaborn dependency
- Moved
feature.synctoutil.syncand expanded its functionalitylibrosa.onset.onset_strengthandonset_strength_multisupport superflux-style lag and max-filteringlibrosa.core.autocorrelatecan now operate along any axis of multi-dimensional input- the
segmentmodule functions now support arbitrary target axis- Added proper window normalization to
librosa.core.istftfor better reconstruction (PR #235).- Standardized
n_fft=2048forpiptrack,ifptrack(deprecated), andlogfsgram(deprecated)onset_strengthparameter'centering'has been deprecated and renamed to'center'onset_strengthalways trims to match the input spectrogram duration- added tests for
piptrack- added test support for Python 3.5
v0.4.0¶
2015-07-08
Bug fixes
- Fixed alignment errors with
offsetanddurationinload() - Fixed an edge-padding issue with
decompose.hpss()which resulted in percussive noise leaking into the harmonic component. - Fixed stability issues with
ifgram(), added options to suppress negative frequencies. - Fixed scaling and padding errors in
feature.delta() - Fixed some errors in
note_to_hz()string parsing - Added robust range detection for
display.cmap - Fixed tick placement in
display.specshow - Fixed a low-frequency filter alignment error in
cqt - Added aliasing checks for
cqtfilterbanks - Fixed corner cases in
peak_pick - Fixed bugs in
find_files()with negative slicing - Fixed tuning estimation errors
- Fixed octave numbering in to conform to scientific pitch notation
New features
- python 3 compatibility
- Deprecation and moved-function warnings
- added
norm=Noneoption toutil.normalize() segment.recurrence_to_lag,lag_to_recurrencecore.hybrid_cqt()andcore.pseudo_cqt()segment.timelag_filter- Efficiency enhancements for
cqt - Major rewrite and reformatting of documentation
- Improvements to
display.specshow:- added the
lagaxis format - added the
tonnetzaxis format - allow any combination of axis formats
- added the
effects.remix()- Added new time and frequency converters:
note_to_hz(),hz_to_note()frames_to_samples(),samples_to_frames()time_to_samples(),samples_to_time()
core.zero_crossingsutil.match_events()segment.subsegment()for segmentation refinement- Functional examples in almost all docstrings
- improved numerical stability in
normalize() - audio validation checks
to_mono()librosa.cachefor storing pre-computed features- Stereo output support in
write_wav - Added new feature extraction functions:
feature.spectral_contrastfeature.spectral_bandwidthfeature.spectral_centroidfeature.spectral_rollofffeature.poly_featuresfeature.rmsefeature.zero_crossing_ratefeature.tonnetz
- Added
display.waveplot
Other changes
- Internal refactoring and restructuring of submodules
- Removed the
chordmodule - input validation and better exception reporting for most functions
- Changed the default colormaps in
display - Changed default parameters in onset detection, beat tracking
- Changed default parameters in
cqt filters.constant_qnow returns filter lengths- Chroma now starts at
Cby default, instead ofA pad_centersupports multi-dimensional input andaxisparameter- switched from
np.ffttoscipy.fftpackfor FFT operations - changed all librosa-generated exception to a new class librosa.ParameterError
Deprecated functions
util.buf_to_intoutput.frames_csvsegment.structure_featurefilters.logfrequencyfeature.logfsgram
v0.3.1¶
2015-02-18
Bug fixes
- Fixed bug #117:
librosa.segment.agglomerativenow returns a numpy.ndarray instead of a list - Fixed bug #115: off-by-one error in
librosa.core.loadwith fixed duration - Fixed numerical underflow errors in
librosa.decompose.hpss - Fixed bug #104:
librosa.decompose.hpssfailed with silent, complex-valued input - Fixed bug #103:
librosa.feature.estimate_tuningfails when no bins exceed the threshold
Features
- New function
librosa.core.get_duration()computes the duration of an audio signal or spectrogram-like input matrix librosa.util.pad_centernow accepts multi-dimensional input
Other changes
- Adopted the ISC license
- Python 3 compatibility via futurize
- Fixed issue #102: segment.agglomerative no longer depends on the deprecated Ward module of sklearn; it now depends on the newer Agglomerative module.
- Issue #108: set character encoding on all source files
- Added dtype persistence for resample, stft, istft, and effects functions
v0.3.0¶
2014-06-30
Bug fixes
- Fixed numpy array indices to force integer values
librosa.util.framenow warns if the input data is non-contiguous- Fixed a formatting error in
librosa.display.time_ticks() - Added a warning if
scikits.samplerateis not detected
Features
- New module
librosa.chordfor training chord recognition models - Parabolic interpolation piptracking
librosa.feature.piptrack() librosa.localmax()now supports multi-dimensional slicing- New example scripts
- Improved documentation
- Added the
librosa.util.FeatureExtractorclass, which allows librosa functions to act as feature extraction stages insklearn - New module
librosa.effectsfor time-domain audio processing - Added demo notebooks for the
librosa.effectsandlibrosa.util.FeatureExtractor - Added a full-track audio example,
librosa.util.example_audio_file() - Added peak-frequency sorting of basis elements in
librosa.decompose.decompose()
Other changes
- Spectrogram frames are now centered, rather than left-aligned. This
removes the
need for window correction in
librosa.frames_to_time() - Accelerated constant-Q transform
librosa.cqt() - PEP8 compliance
- Removed normalization from
librosa.feature.logfsgram() - Efficiency improvements by ensuring memory contiguity
librosa.logamplitude()now supports functional reference power, in addition to scalar values- Improved
librosa.feature.delta() - Additional padding options to
librosa.feature.stack_memory() librosa.cqtandlibrosa.feature.logfsgramnow use the same parameter formats(fmin, n_bins, bins_per_octave).- Updated demo notebook(s) to IPython 2.0
- Moved
perceptual_weighting()fromlibrosa.featureintolibrosa.core - Moved
stack_memory()fromlibrosa.segmentintolibrosa.feature - Standardized
librosa.output.annotationinput format to matchmir_eval - Standardized variable names (e.g.,
onset_envelope).
v0.2.1¶
2014-01-21
Bug fixes
- fixed an off-by-one error in
librosa.onset.onset_strength() - fixed a sign-flip error in
librosa.output.write_wav() - removed all mutable object default parameters
Features
- added option
centeringtolibrosa.onset.onset_strength()to resolve frame-centering issues with sliding window STFT - added frame-center correction to
librosa.core.frames_to_time()andlibrosa.core.time_to_frames() - added
librosa.util.pad_center() - added
librosa.output.annotation() - added
librosa.output.times_csv() - accelerated
librosa.core.stft()andifgram() - added
librosa.util.framefor in-place signal framing librosa.beat.beat_tracknow supports user-supplied tempo- added
librosa.util.normalize() - added
librosa.util.find_files() - added
librosa.util.axis_sort() - new module:
librosa.util() librosa.filters.constant_qnow support padding- added boolean input support for
librosa.display.cmap() - speedup in
librosa.core.cqt()
Other changes
- optimized default parameters for
librosa.onset.onset_detect - set
librosa.filters.melparametern_mels=128by default librosa.feature.chromagram()andlogfsgram()now use power instead of energylibrosa.display.specshow()withy_axis='chroma'now labels aspitch class- set
librosa.core.cqtparameterresolution=2by default - set
librosa.feature.chromagramparameteroctwidth=2by default
v0.2.0¶
2013-12-14
Bug fixes
- fixed default
librosa.core.stft, istft, ifgramto match specification - fixed a float->int bug in peak_pick
- better memory efficiency
librosa.segment.recurrence_matrixcorrects for width suppression- fixed a divide-by-0 error in the beat tracker
- fixed a bug in tempo estimation with short windows
librosa.feature.syncnow supports 1d arrays- fixed a bug in beat trimming
- fixed a bug in
librosa.core.stftwhen calculating window size - fixed
librosa.core.resampleto support stereo signals
Features
- added filters option to cqt
- added window function support to istft
- added an IPython notebook demo
- added
librosa.features.deltafor computing temporal difference features - new
examplesscripts: tuning, hpss - added optional trimming to
librosa.segment.stack_memory librosa.onset.onset_strengthnow takes generic spectrogram functionfeature- compute reference power directly in
librosa.core.logamplitude - color-blind-friendly default color maps in
librosa.display.cmap librosa.core.onset_strengthnow accepts an aggregator- added
librosa.feature.perceptual_weighting - added tuning estimation to
librosa.feature.chromagram - added
librosa.core.A_weighting - vectorized frequency converters
- added
librosa.core.cqt_frequenciesto get CQT frequencies librosa.core.cqtbasic constant-Q transform implementationlibrosa.filters.cq_to_chromato convert log-frequency to chroma- added
librosa.core.fft_frequencies librosa.decompose.hpsscan now return masking matrices- added reversal for
librosa.segment.structure_feature - added
librosa.core.time_to_frames - added cent notation to
librosa.core.midi_to_note - added time-series or spectrogram input options to
chromagram,logfsgram,melspectrogram, andmfcc - new module:
librosa.display librosa.output.segment_csv=>librosa.output.frames_csv- migrated frequency converters to
librosa.core - new module:
librosa.filters librosa.decompose.hpssnow supports complex-valued STFT matriceslibrosa.decompose.decompose()supportssklearndecomposition objects- added
librosa.core.phase_vocoder - new module:
librosa.onset; migrated onset strength fromlibrosa.beat - added
librosa.core.pick_peaks librosa.core.load()supports offset and duration parameterslibrosa.core.magphase()to separate magnitude and phase from a complex matrix- new module:
librosa.segment
Other changes
onset_estimate_bpm => estimate_tempo- removed
n_fftfromlibrosa.core.istft() librosa.core.mel_frequenciesreturnsn_melsvalues by default- changed default
librosa.decompose.hpsswindow to 31 - disabled onset de-trending by default in
librosa.onset.onset_strength - added complex-value warning to
librosa.display.specshow - broke compatibilty with
ifgram.m;librosa.core.ifgramnow matchesstft - changed default beat tracker settings
- migrated
hpssintolibrosa.decompose - changed default
librosa.decompose.hpsspower parameter to2.0 librosa.core.load()now returns single-precision by default- standardized
n_fft=2048,hop_length=512for most functions - refactored tempo estimator
v0.1.0¶
Initial public release.