Changelog

v0.10

v0.10.2

2024-05-02

New features
  • #1829 librosa.cite() returns a DOI (document object identifier) for citing librosa in academic publications. Brian McFee

  • #1766 librosa.beat.beat_track, librosa.onset.onset_detect, and librosa.util.peak_pick now support multi-channel inputs. Brian McFee

  • #1739, #1756, #1762 key_to_degrees and key_to_notes now support multiple accidentals in the tonic, and modes (ionian, dorian, etc). Eugene Rabinovich

  • #1770 Out-of-key notes are now optionally decorated with natural (♮) accidentals. Eugene Rabinovich

Bug fixes
  • #1814 Corrected an off-by-one error when computing phase advance in librosa.phase_vocoder. Brian McFee

  • #1784 Improved handling of warnings in the test suite, and fixed a bug in dtype propagation through ivqt. Brian McFee

  • #1733 Fixed an off-by-one error in trimming of detected beats. Brian McFee

  • #1755 Avoid deprecated features in matplotlib and ensure compatibility with mpl 3.8. Brian McFee

Documentation
  • #1801 Improved top-level structure of the documentation site. Dana Lee

  • #1827 Improvements to example code in documentation to include sampling rate parameters whenever necessary. Brian McFee

  • #1821 Added “copy button” to code examples in documentation. Brian McFee

  • #1789 Fixed type annotations for sampling rate parameters. Brian McFee

  • #1780 Corrected mistake in util.frame documentation. Gao Lei

  • #1783 Removed problematic language from test code and documentation. Dan Ellis

Other changes and maintenance
  • #1826 Expanded parameter pass-through support in effects.hpss and related functions. Brian McFee

  • #1822 Allow display.specshow to control min and max tempo in tempogram plots. Brian McFee

  • #1820 Updated github actions. Brian McFee

  • #1813 Improved performance of autocorrelate. Jize Guo

  • #1808, #1769 Added python 3.11 and 3.12 to CI test matrix. Brian McFee

  • #1790 Explicitly allow scalar inputs in decibel conversions. Brian McFee

  • #1782 Modernized usage of matplotlib colormaps. Phillip S.M. Skelton

  • #1765 Modernized usage of importlib and package resources. Matt Pitkin

v0.10.1

2023-08-16

This release consists primarily of corrections to documentation and updates to tests and development environment specifications.

Bug fixes
  • #1677 Correct handling of octave boundaries in Variable-Q transform. Brian McFee

  • #1693 Stricter checks on yin and pyin parameters. Brian McFee

  • #1726 Enforce consistency of time-to-sample unit conversion. Brian McFee

Documentation
  • #1699 Update the documentation to support sphinx 6.x. Brian McFee

  • #1703 Corrected pitch_shift documentation for bins_per_octave. Shin Hyun

  • #1706 Corrected typo on README.md. Iliya S.

  • #1713 Multiple minor documentation updates. Brian McFee

  • #1718 Added continuous integration action for documentation builds. Brian McFee

  • #1719 Added advanced example for patch generation. Brian McFee

Other changes
  • #1704 Added scale= parameter to effects.pitch_shift. Shin Hyun

  • #1722 Restructured lazy_loader usage of matplotlib. Brian McFee

  • #1727 Support pooch>=1.7.0. Brian McFee

  • #1731 Update test suite to support scipy>=1.11. Brian McFee

v0.10.0.post2

2023-03-17

This maintenance release updates the dependency specifications to avoid an incompatibility with pooch >= 1.7.0. This restriction only affects loading of specific example files, and does not otherwise affect functionality of the library.

v0.10.0.post1

2023-03-16

This maintenance release updates the dependency specifications to avoid an incompatibility with numpy versions 1.22.0, 1.22.1, and 1.22.2. Functionality is otherwise identical to librosa version 0.10.0.

v0.10.0

2023-02-20

New features
Bug fixes
  • #1560 Corrected an error in bandwidth estimation for window functions that take on negative sample values. Brian McFee

  • #1571 Fixed rounding error in multirate filterbank calculation of sampling rates. Brian McFee

  • #1594 Fixed incorrect use of deprecated numpy numerical types. Mattia Di Gangi

  • #1596 Fixed harmonic interpolation for recent scipy releases. Brian McFee

API changes
Documentation
  • #1520 Improved CONTRIBUTING.md documentation. Kian Eliasi

  • #1531 Updated LICENSE.md documentation. Anton Kostin

  • #1536 Added keyword argument (kwargs) definitions to docstrings. Emily Halvachs

  • #1537 Improvements to CONTRIBUTING.md. Juanita Gomez

  • #1545 Correction to docstring for librosa.note_to_midi. Helmin Jinoz

  • #1563 Improved librosa.display.specshow documentation to explain cmap= parameter. Kian Eliasi

  • #1573 Improved documentation for librosa.filters.semitone_filterbank. BdeGraff

  • #1586 Fixed figure layout in documentation builds. Brian McFee

  • #1592 Fixed incorrect link to the documentation badge in README. Zvi Baratz

  • #1614 Improved documentation for resampling. Jon Petter Åsen

Deprecations
  • #1521 Removed backward compatibility support for positional arguments that are now keyword-only. Brian McFee

  • #1577 Removed official support for python 3.6. Brian McFee

  • #1625 The audioread backend is now deprecated and will be removed in a future release. Brian McFee

Other changes
  • #1501 Infer square / equal plot dimensions for compatible x/y axes in librosa.display.specshow. Kian Eliasi

  • #1535 Standardized integer type checks throughout the library. Alexandre Chabot-Leclerc

  • #1539 Refactored librosa.display.AdaptiveWaveplot to allow callback disconnection. Brian McFee

  • #1548 Removed deprecated ‘hanning’ window specification from tests. Brian McFee

  • #1551 Removed dependency on contextlib2. Steve Kowalik

  • #1565 Efficiency improvements to librosa.autocorrelate. Brian McFee

  • #1566 Changed the default sample rate conversion method from kaiser_best (resampy) to soxr_hq (soxr). Brian McFee

  • #1581 Updated tests for numpy 1.23 compatibility. Brian McFee

  • #1617 Accelerated librosa.yin implementation. Brian McFee

  • #1640 Updated display module dependencies to require matplotlib >= 3.3. Brian McFee

  • #1643 Accelerated librosa.zero_crossings implementation. Brian McFee

  • #1646 Added support for transposed (vertical) display of waveforms. Brian McFee

v0.9

v0.9.2

2022-06-27

Bug fixes
  • #1457 Fixed librosa.show_versions to match package dependencies. Brian McFee

  • #1493 Fixed a bug in librosa.effects.split when applied to multichannel data. Brian McFee

Documentation
  • #1447 Migrated documentation builds to GitHub Actions. Brian McFee

  • #1469 Corrected documentation for db_to_amplitude and amplitude_to_db. i-aki-y

  • #1473 Readability improvements to package README. Asmitha Krishnakumar

  • #1475 Expanded documentation to librosa.sequence.viterbi_discriminative. Brian McFee

  • #1479 Readability improvements to package README. Chandrashekhar Ramaprasad

  • #1491 Pinned sphinx version for documentation builds. Brian McFee

  • #1511 Expanded documentation for find_files. Xiao-Ming

  • #1513 Various documentation updates and enhancements. Brian McFee

Other changes
  • #1453 Removed test data from main repository and reduced the git attic. Brian McFee

  • #1479 Accept pre-constructed audioread objects in librosa.load. Brian McFee

  • #1504 Accelerate librosa.magphase. Will Monroe

  • #1507, #1508, #1509 Various spelling corrections in documentation, comments, and warnings. Lorenz Nickel

v0.9.1

2022-02-15

This release provides partial backward compatibility to the 0.8 series. The 0.9.0 release introduced restrictions on positional arguments to many functions, requiring parameters to be passed by keyword arguments instead. In 0.9.1, positional parameters now trigger warnings instead of errors, so 0.8-compatible code should work again.

Additional changes:

v0.9.0

2022-02-07

The main feature of this release is (nearly) full support for arbitrary multi-channel processing, along with several speed and stability enhancements. A detailed list of changes is provided below.

New Features
  • #1130 Nearly full support for multi-channel processing. Brian McFee, Daniel Faronbi, Iran Roman

  • #1331 Option to disable unicode characters in display functions. Brian McFee

  • #1441 Significantly expanded the library of example audio clips. Brian McFee

API changes
  • #1114 Most functions now require keyword arguments. Brian McFee

  • #1382 The default padding mode for most functions (including STFT) is now zero-padding. Brian McFee

  • #1418 librosa.load and librosa.stream can now operate directly on open soundfile objects. Brian McFee

  • #1414 librosa.display.specshow now uses centered coordinate grids. Brian McFee

  • #1398 librosa.iirt now exposes API control over resampling modes. Brian McFee

  • #1416 Removed deprecated functions librosa.display.waveplot and librosa.util.example_audio_file. Brian McFee

Bug fixes
  • #1387 Fixed errors in support of odd frame lengths in various functions. Brian McFee

  • #1273 Minor corrections to constants in perceptual weighting functions. Brian McFee

  • #1350 Removed uses of deprecated numpy numerical types. Brian McFee

  • #1361 Maximum frequency is now correctly inferred as Nyquist in onset strength calculation. Brian McFee

  • #1362 librosa.effects.deemphasis no longer modifies the input signal in-place. Brian McFee

  • #1375 librosa.util.frame now correctly works for arbitrary memory layouts and numbers of axes. Brian McFee

  • #1425 Fixed an off-by-one error in librosa.yin and librosa.pyin. @philstem, Brian McFee

  • #1430 Removed unnecessary __all__ specifications to better support static analysis. Fabian Keller

  • #1407 Corrected a normalization error in inverse CQT. Brian McFee, Vincent Lostanlen

Documentation
Other changes
  • #418 librosa.cqt now supports arbitrary hop lengths. Brian McFee

  • #1405 Improvements and generalizations to constant-Q/variable-Q basis construction. Brian McFee, Vincent Lostanlen

  • #1324 Added a run-time check for minimally supported matplotlib versions. Brian McFee

  • #1325 Enhanced continuous integration testing for oldest and newest environments. Brian McFee

  • #1358 Harmonic interpolation now preemptively detects repeated values that produce unstable estimates. Brian McFee

  • #1432 Specify stack levels in warnings to provide more helpful warning messages. Brian McFee

  • #1404, #1406 Improved packaging configurations. Alex Malins

  • #1384 Fixed package configuration error for documentation builds. Adam Weiss

Deprecations

v0.8

v0.8.1

2021-05-26

New Features
Bug fixes
Documentation
  • #1211 fixed a broken link in the changelog. Pavel Campr

  • #1218 corrected an exception/warning message in librosa.stft when the frame length exceeds the input length. Frank Zalkow

  • #1237 fixed spelling errors in librosa.yin and librosa.pyin documentation. Tim Gates

  • #1284 fixed broken links in CONTRIBUTING.md document. Abduttayyeb Mazhar

  • #1287 expanded instructions for installing ffmpeg on Windows. Cash TingHin Lo

  • #1298 fixed a dimension calculation error in librosa.stream documentation. Xinlu Zhuang

  • #1321 fixed a mismatched parenthesis in librosa.feature.mfcc documentation. Connor Guerrero

  • #1333 expanded documentation describing unsupported codecs in librosa.load. Brian McFee

Other changes
Deprecations to be removed in 0.9

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
Other changes

v0.1

Initial public release.