Changelog

v0.8

v0.8.0

2020-07-22

New Features
Removed features and API changes
  • #1062
    • Removed support for python < 3.6.

    • Removed the deprecated output module.

    • Removed deprecated ifgram function.

    • Removed deprecated amin parameter from icqt

    • Removed deprecated A440 parameter from hz_to_octs, octs_to_hz, and chroma features

    • Removed deprecated tuning= parameter in CQT filter constructors

    • Removed deprecated util.roll_sparse function

  • #1050 implemented changes to Mel filter normalization

  • #1165 removed deprecated optional_jit decorator

Deprecations to be removed in 0.9
Bug fixes
Documentation
Other changes

v0.7

v0.7.2

2020-01-13

New Features
  • #1008 added liftering support to MFCC inversion. Ayoub Malek

  • #1021 added pathlib support to librosa.load. Stef van der Struijk

  • #1022 added “mu-law” compression and expansion (companding). Brian McFee

Bug fixes
  • #1031 fixed errors in dynamic time warping with NaN inputs and detection of invalid warping paths. Frank Zalkow, Brian McFee

  • #1041 fixed frame-length normalization in spectrogram-based RMS energy calculation. Shunsuke Hidaka

  • #1054 fixed the length of signals produced by librosa.tone. Brian McFee

Documentation
  • #1038 removed math formatting from documentation. Vincent Lostanlen

  • #1042 corrected documentation for DTW. Eric Semeniuc

  • #1043 corrected typos in time-frequency reassignment spectrogram documentation. Scott Seyfarth

  • #1055 removed dct_type=None as an option in MFCC documentation. Brian McFee

Other changes
  • #1050 expanded normalization modes in Mel basis construction. Brian McFee

v0.7.1

2019-10-09

New Features
Bug fixes
  • #983 Added a missing parameter to librosa.griffinlim_cqt. Voodoohop

  • #978 Correct FFT normalization discrepancy in rms calculation. Brian McFee

  • #930 Corrected an error in automatic tuning correction for CQT. Brian McFee

  • #942 Fixed seeking behavior in librosa.stream when operating on file-handle inputs. Carl Thome

  • #920 Fixed a boundary condition check in full-sequence DTW. Frank Zalkow

Documentation
Other changes

v0.7.0

2019-07-07

Note: the 0.7 series will be the last to officially support Python 2.7.

New features
Bug fixes
  • #900 librosa.effects.pitch_shift now preserves length. Vincent Lostanlen

  • #891 librosa.pcen Dynamic range compression in PCEN is more numerically stable for small values of the exponent. Vincent Lostanlen

  • #888 librosa.ifgram Instantaneous frequency spectrogram now correctly estimates center frequencies when using windows other than hann. Brian McFee

  • #869 librosa.sequence.dtw Fixed a bug in dynamic time warping when subseq=True. Viktor Andreevitch Morozov

  • #851 librosa.pcen now initializes its autoregressive filtering in the steady state, not with silence. Jan Schlüter, Brian McFee

  • #833 librosa.segment.recurrence_matrix: width parameter now cannot exceed data length. Brian McFee

  • #825 Filter bank constructors mel, chroma, constant_q, and cq_to_chroma are now type-stable. Vincent Lostanlen, Brian McFee

  • #802 librosa.icqt Inverse constant-Q transform has been completely rewritten and is more numerically stable. Brian McFee

Removed features (deprecated in v0.6)
  • Discrete cosine transform. We recommend using scipy.fftpack.dct

  • The delta function no longer support the trim keyword argument.

  • Root mean square error (rmse) has been renamed to rms.

  • iirt now uses sos mode by default.

Documentation
  • #891 Improved the documentation of PCEN. Vincent Lostanlen

  • #884 Improved installation documentation. Darío Hereñú

  • #882 Improved code style for plot generation. Alex Metsai

  • #874 Improved the documentation of spectral features. Brian McFee

  • #804 Improved the documentation of MFCC. Brian McFee

  • #849 Removed a redundant link in the util documentation. Keunwoo Choi

  • #827 Improved the docstring of recurrence_matrix. Brian McFee

  • #813 Improved the docstring of load. Andy Sarroff

Other changes
  • #917 The output module is now deprecated, and will be removed in version 0.8.

  • #878 More informative exception handling. Jack Mason

  • #857 librosa.resample() now supports mode=’fft’, equivalent to the previous scipy mode. Brian McFee

  • #854 More efficient length-aware ISTFT and ICQT. Vincent Lostanlen

  • #846 Nine librosa functions now store jit-compiled, numba-accelerated caches across sessions. Brian McFee

  • #841 librosa.load no longer relies on realpath(). Brian McFee

  • #834 All spectral feature extractors now expose all STFT parameters. Brian McFee

  • #829 Refactored librosa.cache. Brian McFee

  • #818 Thanks to np.fft.rfft, functions stft, istft, ifgram, and fmt are faster and have a reduced memory footprint. Brian McFee

v0.6

v0.6.3

2019-02-13

Bug fixes
  • #806 Fixed a bug in librosa.estimate_tuning. @robrib, Monsij Biswal, Brian McFee

  • #799 Enhanced stability of elliptical filter implementation in iirt. Frank Zalkow

New features
Other changes
  • #813 updated librosa.load documentation to cover bit depth truncation. Andy Sarroff

  • #805 updated documentation for librosa.localmax. Brian McFee

  • #801 renamed librosa.feature.rmse to librosa.feature.rms. @nullmightybofo

  • #793 updated comments in librosa.stft. Dan Ellis

  • #791 updated documentation for write_wav. Brian McFee

  • #790 removed dependency on deprecated imp module. Brian McFee

  • #787 fixed typos in CONTRIBUTING documentation. Vincent Lostanlen

  • #785 removed all run-time assertions in favor of proper exceptions. Brian McFee

  • #783 migrated test infrastructure from nose to pytest. Brian McFee

  • #777 include LICENSE file in source distribution. toddrme2178

  • #769 updated documentation in librosa.istft. Shayenne Moura

v0.6.2

2018-08-09

Bug fixes
  • #730 Fixed cache support for joblib>=0.12. Matt Vollrath

New features
Other changes
  • #727 updated documentation for librosa.get_duration. Zhen Wang

  • #731 fixed a typo in documentation for librosa.fft_frequencies. Ziyao Wei

  • #734 expanded documentation for librosa.feature.spectrall_rolloff. Ziyao Wei

  • #751 fixed example documentation for proper handling of phase in dB-scaling. Vincent Lostanlen

  • #755 forward support and future-proofing for fancy indexing with numpy>1.15. Brian McFee

v0.6.1

2018-05-24

Bug fixes
New features
Other changes
  • #677, #705 added continuous integration testing for Windows. Brian McFee, Ryuichi Yamamoto

  • #680 updated display module tests to support matplotlib 2.1. Brian McFee

  • #684 corrected documentation for librosa.stft and librosa.ifgram. Keunwoo Choi

  • #699, #701 corrected documentation for librosa.filters.semitone_filterbank and librosa.filters.mel_frequencies. Vincent Lostanlen

  • #704 eliminated unnecessary side-effects when importing librosa.display. Brian McFee

  • #707 improved test coverage for dynamic time warping. Brian McFee

  • #714 librosa.util.match_intervals matching logic has changed from raw intersection to Jaccard similarity. Brian McFee

API Changes and compatibility
  • #716 librosa.dtw has moved to librosa.sequence.dtw, and librosa.fill_off_diagonal has moved to librosa.util.fill_off_diagonal. Brian McFee

v0.6.0

2018-02-17

Bug fixes
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 librosa.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 librosa.util.normalize now preserves data type. Brian McFee

  • #632 refined the validation requirements for librosa.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 librosa.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 librosa.segment.recurrence_matrix. Julia Wilkins

  • #598 Improved efficiency of librosa.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

    • 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 librosa.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

v0.5.1

2017-05-08

Bug fixes
New features
Other changes
  • #569 librosa.feature.rmse now centers frames in the time-domain by default. Brian McFee

  • #564 librosa.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_wav only normalizes floating point, and normalization is disabled by default. Brian McFee

  • #417 librosa.cqt output 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 librosa.pitch_tuning. Hojin Lee

New features
Other changes
  • #352 removed seaborn integration. Brian McFee

  • #368 rewrite of the librosa.display submodule. All plots are now in natural coordinates. Brian McFee

  • #402 librosa.display submodule is not automatically imported. Brian McFee

  • #403 librosa.decompose.hpss now returns soft masks. Brian McFee

  • #407 librosa.feature.rmse can now compute directly in the time domain. Carl Thome

  • #432 librosa.feature.rmse renames n_fft to frame_length. Brian McFee

  • #446 librosa.cqt now disables tuning estimation by default. Brian McFee

  • #452 librosa.filters.__float_window now always uses integer length windows. Brian McFee

  • #459 librosa.load now supports res_type argument for resampling. CJ Carr

  • #482 librosa.filters.mel now 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_peak to util.peak_pick

    • core.localmax to util.localmax

    • feature.sync to util.sync

  • The following functions, classes, and constants have been removed:
    • core.ifptrack

    • feature.chromagram

    • feature.logfsgram

    • filters.logfrequency

    • output.frames_csv

    • segment.structure_Feature

    • display.time_ticks

    • util.FeatureExtractor

    • util.buf_to_int

    • util.SMALL_FLOAT

  • The following parameters have been removed:
  • Seaborn integration has been removed, and the display submodule now requires matplotlib >= 1.5.
    • The use_sns argument has been removed from display.cmap

    • magma is now the default sequential colormap.

  • The librosa.display module has been rewritten.
    • librosa.display.specshow now 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.hpss with mask=True now returns soft masks, rather than binary masks.

  • librosa.filters.get_window wraps scipy.signal.get_window, and handles generic callables as well pre-registered window functions. All windowed analyses (e.g., stft, cqt, or tempogram) now support the full range of window functions and parameteric windows via tuple parameters, e.g., window=(‘kaiser’, 4.0).

  • stft windows are now explicitly asymmetric by default, which breaks backwards compatibility with the 0.4 series.

  • cqt now returns properly scaled outputs that are continuous across octave boundaries. This breaks backwards compatibility with the 0.4 series.

  • cqt now 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).

  • logamplitude is deprecated in favor of amplitude_to_db or power_to_db. The ref_power parameter has been renamed to ref.

v0.4

v0.4.3

2016-05-17

Bug fixes
New features
Other changes

v0.4.2

2016-02-20

Bug fixes
New features
  • #279 librosa.cqt now provides complex-valued output with argument real=False. This will become the default behavior in subsequent releases.

  • #288 librosa.resample now supports multi-channel inputs. Brian McFee

  • #295 librosa.display.frequency_ticks: like time_ticks. Ticks can now dynamically adapt to scale (mHz, Hz, KHz, MHz, GHz) and use automatic precision formatting (%g). Brian McFee

Other changes
  • #277 improved documentation for OSX. Stefan Balke

  • #294 deprecated the FeatureExtractor object. Brian McFee

  • #300 added dependency version requirements to install script. Brian McFee

  • #302, #279 renamed the following parameters
  • #308 librosa.cqt default filter_scale parameter is now 1 instead of 2.

v0.4.1

2015-10-17

Bug fixes
  • Improved safety check in CQT for invalid hop lengths

  • Fixed division by zero bug in librosa.pitch.pip_track

  • Fixed integer-type error in librosa.util.pad_center on numpy v1.10

  • Fixed a context scoping error in librosa.load with some audioread backends

  • librosa.autocorrelate now persists type for complex input

New features
Other changes
  • Rewrote librosa.display.waveplot for improved efficiency

  • librosa.decompose.deompose() now supports pre-trained transformation objects

  • Nullified side-effects of optional seaborn dependency

  • Moved feature.sync to librosa.util.sync and expanded its functionality

  • librosa.onset.onset_strength and onset_strength_multi support superflux-style lag and max-filtering

  • librosa.autocorrelate can now operate along any axis of multi-dimensional input

  • the librosa.segment module functions now support arbitrary target axis

  • Added proper window normalization to librosa.istft for better reconstruction (PR #235).

  • Standardized n_fft=2048 for piptrack, ifptrack (deprecated), and logfsgram (deprecated)

  • onset_strength parameter ‘centering’ has been deprecated and renamed to ‘center’

  • onset_strength always 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 offset and duration in load()

  • 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 librosa.note_to_hz() string parsing

  • Added robust range detection for librosa.display.cmap

  • Fixed tick placement in librosa.display.specshow

  • Fixed a low-frequency filter alignment error in librosa.cqt

  • Added aliasing checks for librosa.cqt filterbanks

  • 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=None option to util.normalize()

  • segment.recurrence_to_lag, lag_to_recurrence

  • core.hybrid_cqt() and core.pseudo_cqt()

  • segment.timelag_filter

  • Efficiency enhancements for cqt

  • Major rewrite and reformatting of documentation

  • Improvements to display.specshow: - added the lag axis format - added the tonnetz axis format - allow any combination of axis formats

  • 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_crossings

  • util.match_events()

  • segment.subsegment() for segmentation refinement

  • Functional examples in almost all docstrings

  • improved numerical stability in normalize()

  • audio validation checks

  • to_mono()

  • librosa.cache for storing pre-computed features

  • Stereo output support in write_wav

  • Added new feature extraction functions: - feature.spectral_contrast - feature.spectral_bandwidth - feature.spectral_centroid - feature.spectral_rolloff - feature.poly_features - feature.rmse - feature.zero_crossing_rate - feature.tonnetz

  • Added display.waveplot

Other changes
  • Internal refactoring and restructuring of submodules

  • Removed the chord module

  • 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_q now returns filter lengths

  • Chroma now starts at C by default, instead of A

  • pad_center supports multi-dimensional input and axis parameter

  • switched from np.fft to scipy.fftpack for FFT operations

  • changed all librosa-generated exception to a new class librosa.ParameterError

Deprecated functions
  • util.buf_to_int

  • output.frames_csv

  • segment.structure_feature

  • filters.logfrequency

  • feature.logfsgram

v0.3

v0.3.1

2015-02-18

Bug fixes
Features
  • New function librosa.get_duration() computes the duration of an audio signal or spectrogram-like input matrix

  • librosa.util.pad_center now 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.frame now warns if the input data is non-contiguous

  • Fixed a formatting error in librosa.display.time_ticks()

  • Added a warning if scikits.samplerate is not detected

Features
  • New module librosa.chord for 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.FeatureExtractor class, which allows librosa functions to act as feature extraction stages in sklearn

  • New module librosa.effects for time-domain audio processing

  • Added demo notebooks for the librosa.effects and librosa.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.cqt and librosa.feature.logfsgram now use the same parameter formats (fmin, n_bins, bins_per_octave).

  • Updated demo notebook(s) to IPython 2.0

  • Moved perceptual_weighting() from librosa.feature into librosa

  • Moved stack_memory() from librosa.segment into librosa.feature

  • Standardized librosa.output.annotation input format to match mir_eval

  • Standardized variable names (e.g., onset_envelope).

v0.2

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 centering to librosa.onset.onset_strength() to resolve frame-centering issues with sliding window STFT

  • added frame-center correction to librosa.frames_to_time() and librosa.time_to_frames()

  • added librosa.util.pad_center()

  • added librosa.output.annotation()

  • added librosa.output.times_csv()

  • accelerated librosa.stft() and ifgram()

  • added librosa.util.frame for in-place signal framing

  • librosa.beat.beat_track now 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_q now support padding

  • added boolean input support for librosa.display.cmap()

  • speedup in librosa.cqt()

Other changes
  • optimized default parameters for librosa.onset.onset_detect

  • set librosa.filters.mel parameter n_mels=128 by default

  • librosa.feature.chromagram() and logfsgram() now use power instead of energy

  • librosa.display.specshow() with y_axis=’chroma’ now labels as pitch class

  • set librosa.cqt parameter resolution=2 by default

  • set librosa.feature.chromagram parameter octwidth=2 by default

v0.2.0

2013-12-14

Bug fixes
  • fixed default librosa.stft, istft, ifgram to match specification

  • fixed a float->int bug in peak_pick

  • better memory efficiency

  • librosa.segment.recurrence_matrix corrects for width suppression

  • fixed a divide-by-0 error in the beat tracker

  • fixed a bug in tempo estimation with short windows

  • librosa.feature.sync now supports 1d arrays

  • fixed a bug in beat trimming

  • fixed a bug in librosa.stft when calculating window size

  • fixed librosa.resample to support stereo signals

Features
  • added filters option to cqt

  • added window function support to istft

  • added an IPython notebook demo

  • added librosa.features.delta for computing temporal difference features

  • new examples scripts: tuning, hpss

  • added optional trimming to librosa.segment.stack_memory

  • librosa.onset.onset_strength now takes generic spectrogram function feature

  • compute reference power directly in librosa.logamplitude

  • color-blind-friendly default color maps in librosa.display.cmap

  • librosa.onset_strength now accepts an aggregator

  • added librosa.feature.perceptual_weighting

  • added tuning estimation to librosa.feature.chromagram

  • added librosa.A_weighting

  • vectorized frequency converters

  • added librosa.cqt_frequencies to get CQT frequencies

  • librosa.cqt basic constant-Q transform implementation

  • librosa.filters.cq_to_chroma to convert log-frequency to chroma

  • added librosa.fft_frequencies

  • librosa.decompose.hpss can now return masking matrices

  • added reversal for librosa.segment.structure_feature

  • added librosa.time_to_frames

  • added cent notation to librosa.midi_to_note

  • added time-series or spectrogram input options to chromagram, logfsgram, melspectrogram, and mfcc

  • new module: librosa.display

  • librosa.output.segment_csv => librosa.output.frames_csv

  • migrated frequency converters to librosa

  • new module: librosa.filters

  • librosa.decompose.hpss now supports complex-valued STFT matrices

  • librosa.decompose.decompose() supports sklearn decomposition objects

  • added librosa.phase_vocoder

  • new module: librosa.onset; migrated onset strength from librosa.beat

  • added librosa.pick_peaks

  • librosa.load() supports offset and duration parameters

  • librosa.magphase() to separate magnitude and phase from a complex matrix

  • new module: librosa.segment

Other changes

v0.1

Initial public release.