Changelog
=========

v0.7.2
------
2020-01-13

New Features
   - `#1008`_ added liftering support to MFCC inversion. *Ayoub Malek*
   - `#1021`_ added `pathlib` support to `core.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 `core.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*

.. _#1008: https://github.com/librosa/librosa/issues/1008
.. _#1021: https://github.com/librosa/librosa/issues/1021
.. _#1022: https://github.com/librosa/librosa/issues/1022
.. _#1031: https://github.com/librosa/librosa/issues/1031
.. _#1041: https://github.com/librosa/librosa/issues/1041
.. _#1054: https://github.com/librosa/librosa/issues/1054
.. _#1038: https://github.com/librosa/librosa/issues/1038
.. _#1042: https://github.com/librosa/librosa/issues/1042
.. _#1043: https://github.com/librosa/librosa/issues/1043
.. _#1055: https://github.com/librosa/librosa/issues/1055
.. _#1050: https://github.com/librosa/librosa/issues/1050


v0.7.1
------
2019-10-09


New Features
   - `#966`_ `util.frame` now supports multidimensional data. Includes a new helper function `util.stack` for contiguous concatenation. *Brian McFee*
   - `#934`_ `core.griffinlim_cqt`: Phase retrieval from constant-Q magnitude spectra. *Brian McFee*
   - `#940`_ Enhanced compatibility with HTK's MFCC implementation: `effects.preemphasis` and `lifter=` parameter in MFCC.  *Brian McFee*
   - `#949`_ `util.shear` utility for shear-transforming 2D arrays. *Brian McFee*
   - `#926`_ `core.reassigned_spectrogram`: time-frequency reassigned spectrogram.  *Scott Seyfarth*


Bug fixes
   - `#983`_ Added a missing parameter to `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
   - `#976`_ Fixed a typo in `stream` documentation. *Alastair Porter*
   - `#958`_ Visualization of reassigned spectrograms. *Vincent Lostanlen*
   - `#943`_ Improved documentation for `core.stft`. *Vincent Lostanlen*
   - `#939`_ Expanded documentation of `feature.melspectrogram`. *Vincent Lostanlen*


Other changes
   - `#1004`_ Expose frame parameters in `onset` and `chroma_stft` functions. *Brian McFee*
   - `#1003`_ Removed warning filter reset, and changed the Python2 deprecation
     warning to class `FutureWarning`. *Brian McFee, Fabian Keller*
   - `#1000`_ Fixed an upstream deprecation warning from `np.asscalar()`. *Vincent Lostanlen*
   - `#971`_ Beat and tempo estimation now support prior distributions. *Brian McFee*
   - `#968`_ `util.valid_audio` now enforces memory contiguity. *Vincent Lostanlen*
   - `#963`_ Improved x-axis decoration types in `display.waveplot`. *Vincent Lostanlen*
   - `#960`_ Ensure memory contiguity of audio buffers after resampling. *Brian McFee*
   - `#957`_ Code-base audit for proper usage of `times_like`. *Brian McFee*
   - `#953`_ Deprecated `core.ifgram` in favor of `reassigned_spectrogram`. *Brian McFee*
   - `#950`_ Allow initial phase estimates for `griffinlim` methods. *Brian McFee*
   - `#949`_ Accelerated `segment.lag_to_recurrence` and `segment.recurrence_to_lag`. Deprecated `util.roll_sparse`. *Brian McFee*
   - `#930`_ `A440=` parameter has been deprecated across the library in favor of a standardized `tuning=` parameter.  *Brian McFee*

.. _#966: https://github.com/librosa/librosa/issues/966
.. _#934: https://github.com/librosa/librosa/issues/934
.. _#940: https://github.com/librosa/librosa/issues/940
.. _#949: https://github.com/librosa/librosa/issues/949
.. _#926: https://github.com/librosa/librosa/issues/926
.. _#983: https://github.com/librosa/librosa/issues/983
.. _#978: https://github.com/librosa/librosa/issues/978
.. _#930: https://github.com/librosa/librosa/issues/930
.. _#942: https://github.com/librosa/librosa/issues/942
.. _#920: https://github.com/librosa/librosa/issues/920
.. _#976: https://github.com/librosa/librosa/issues/976
.. _#958: https://github.com/librosa/librosa/issues/958
.. _#943: https://github.com/librosa/librosa/issues/943
.. _#939: https://github.com/librosa/librosa/issues/939
.. _#1004: https://github.com/librosa/librosa/issues/1004
.. _#1003: https://github.com/librosa/librosa/issues/1003
.. _#1000: https://github.com/librosa/librosa/issues/1000
.. _#971: https://github.com/librosa/librosa/issues/971
.. _#968: https://github.com/librosa/librosa/issues/968
.. _#963: https://github.com/librosa/librosa/issues/963
.. _#960: https://github.com/librosa/librosa/issues/960
.. _#957: https://github.com/librosa/librosa/issues/957
.. _#953: https://github.com/librosa/librosa/issues/953
.. _#950: https://github.com/librosa/librosa/issues/950


v0.7.0
------
2019-07-07

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


New features
   - `#772`_ `librosa.core.stream`: Stream generator to process long audio files into smaller pieces. *Brian McFee*
   - `#845`_ `librosa.core.load`: Replaced the default audio decoder with `pysoundfile`, and only use `audioread` as backup. *Brian McFee*
   - `#843`_ `librosa.core.griffinlim`: Phase retrieval from magnitude spectrograms using the (accelerated) Griffin-Lim method. *Brian McFee*
   - `#843`_ `librosa.feature.inverse`: New module for feature inversion, based on the Griffin-Lim phase retrieval algorithm. Includes `mel_to_audio` and `mfcc_to_audio`. *Brian McFee*
   - `#725`_ `librosa.core.lpc`: Linear prediction coefficients (LPC). *Adam Weiss*
   - `#907`_ `librosa.sequence.rqa`: Recurrence Quantification Analysis (RQA) for sequence alignment. *Brian McFee*
   - `#739`_ `librosa.beat.plp`: Predominant local pulse (PLP) for variable-tempo beat tracking. *Brian McFee*
   - `#894`_ `librosa.feature.fourier_tempogram`: Fourier Tempogram for representing rhythm in the frequency domain. *Brian McFee*
   - `#891`_ `librosa.core.pcen` Per-channel energy normalization (PCEN) now allows logarithmic range compression at the limit power->0. *Vincent Lostanlen*
   - `#863`_ `librosa.effects.pitch_shift` supports custom resampling modes. *Taewoon Kim*
   - `#857`_ `librosa.core.cqt` and `librosa.core.icqt` Forward and inverse constant-Q transform now support custom resampling modes. *Brian McFee*
   - `#842`_ `librosa.segment.path_enhance`: Near-diagonal path enhancement for recurrence, self- or cross-similarity matrices. *Brian McFee*
   - `#840`_ `librosa.segment.recurrence_matrix` now supports a keyword argument, `self=False`. If set to `True`, the recurrence matrix includes self-loops. *Brian McFee*
   - `#776`_ `librosa.core.piptrack` now supports a keyword argument, `ref=None`, allowing users to override the reference thresholding behavior for determining which bins correspond to pitches. *Brian McFee*
   - `#770`_ `librosa.segment.cross_similarity`: Cross-similarity function for comparing two feature sequences. *Rachel Bittner, Brian McFee*
   - `#709`_ `librosa.onset.onset_strength_multi` now supports a user-specified reference spectrum via the `ref` keyword argument. *Brian McFee*
   - `#576`_ `librosa.core.resample` now supports `mode='polyphase'`. *Brian McFee*
   - `#519`_ `librosa.onset.onset_strength_multi`: Setting `aggregate=False` disables the aggregation of onset strengths across frequency bins. *Brian McFee*


Bug fixes
   - `#900`_ `librosa.effects.pitch_shift` now preserves length. *Vincent Lostanlen*
   - `#891`_ `librosa.core.pcen` Dynamic range compression in PCEN is more numerically stable for small values of the exponent. *Vincent Lostanlen*
   - `#888`_ `librosa.core.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.core.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.core.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.core.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.core.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*

.. _#772: https://github.com/librosa/librosa/issues/772
.. _#845: https://github.com/librosa/librosa/issues/845
.. _#907: https://github.com/librosa/librosa/issues/907
.. _#739: https://github.com/librosa/librosa/issues/739
.. _#894: https://github.com/librosa/librosa/issues/894
.. _#891: https://github.com/librosa/librosa/issues/891
.. _#863: https://github.com/librosa/librosa/issues/863
.. _#857: https://github.com/librosa/librosa/issues/857
.. _#843: https://github.com/librosa/librosa/issues/843
.. _#842: https://github.com/librosa/librosa/issues/842
.. _#840: https://github.com/librosa/librosa/issues/840
.. _#776: https://github.com/librosa/librosa/issues/776
.. _#770: https://github.com/librosa/librosa/issues/770
.. _#725: https://github.com/librosa/librosa/issues/725
.. _#709: https://github.com/librosa/librosa/issues/709
.. _#576: https://github.com/librosa/librosa/issues/576
.. _#519: https://github.com/librosa/librosa/issues/519
.. _#900: https://github.com/librosa/librosa/issues/900
.. _#888: https://github.com/librosa/librosa/issues/888
.. _#869: https://github.com/librosa/librosa/issues/869
.. _#851: https://github.com/librosa/librosa/issues/851
.. _#833: https://github.com/librosa/librosa/issues/833
.. _#825: https://github.com/librosa/librosa/issues/825
.. _#802: https://github.com/librosa/librosa/issues/802
.. _#884: https://github.com/librosa/librosa/issues/884
.. _#882: https://github.com/librosa/librosa/issues/882
.. _#874: https://github.com/librosa/librosa/issues/874
.. _#804: https://github.com/librosa/librosa/issues/804
.. _#849: https://github.com/librosa/librosa/issues/849
.. _#827: https://github.com/librosa/librosa/issues/827
.. _#813: https://github.com/librosa/librosa/issues/813
.. _#878: https://github.com/librosa/librosa/issues/878
.. _#857: https://github.com/librosa/librosa/issues/857
.. _#854: https://github.com/librosa/librosa/issues/854
.. _#846: https://github.com/librosa/librosa/issues/846
.. _#841: https://github.com/librosa/librosa/issues/841
.. _#834: https://github.com/librosa/librosa/issues/834
.. _#829: https://github.com/librosa/librosa/issues/829
.. _#818: https://github.com/librosa/librosa/issues/818
.. _#917: https://github.com/librosa/librosa/issues/917

v0.6.3
------
2019-02-13

Bug fixes
    - `#806`_ Fixed a bug in `estimate_tuning`. *@robrib, Monsij Biswal, Brian McFee*
    - `#799`_ Enhanced stability of elliptical filter implementation in `iirt`. *Frank Zalkow*

New features
    - `#766`_ made smoothing optional in `feature.chroma_cens`. *Kyungyun Lee*
    - `#760`_ allow explicit units for time axis decoration in `display`. *Kyungyun Lee*

Other changes
    - `#813`_ updated `core.load` documentation to cover bit depth truncation. *Andy Sarroff*
    - `#805`_ updated documentation for `core.localmax`. *Brian McFee*
    - `#801`_ renamed `feature.rmse` to `feature.rms`. *@nullmightybofo*
    - `#793`_ updated comments in `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 `core.istft`. *Shayenne Moura*

.. _#813: https://github.com/librosa/librosa/issues/813
.. _#806: https://github.com/librosa/librosa/issues/806
.. _#805: https://github.com/librosa/librosa/issues/805
.. _#801: https://github.com/librosa/librosa/issues/801
.. _#799: https://github.com/librosa/librosa/issues/799
.. _#793: https://github.com/librosa/librosa/issues/793
.. _#791: https://github.com/librosa/librosa/issues/791
.. _#790: https://github.com/librosa/librosa/issues/790
.. _#787: https://github.com/librosa/librosa/issues/787
.. _#785: https://github.com/librosa/librosa/issues/785
.. _#783: https://github.com/librosa/librosa/issues/783
.. _#777: https://github.com/librosa/librosa/issues/777
.. _#769: https://github.com/librosa/librosa/issues/769
.. _#766: https://github.com/librosa/librosa/issues/766
.. _#760: https://github.com/librosa/librosa/issues/760

v0.6.2
------
2018-08-09

Bug fixes
    - `#730`_ Fixed cache support for ``joblib>=0.12``.  *Matt Vollrath*

New features
    - `#735`_ Added `core.times_like` and `core.samples_like` to generate time and sample indices
      corresponding to an existing feature matrix or shape specification. *Steve Tjoa*
    - `#750`_, `#753`_ Added `core.tone` and `core.chirp` signal generators. *Ziyao Wei*

Other changes
    - `#727`_ updated documentation for `core.get_duration`. *Zhen Wang*
    - `#731`_ fixed a typo in documentation for `core.fft_frequencies`. *Ziyao Wei*
    - `#734`_ expanded documentation for `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*

.. _#730: https://github.com/librosa/librosa/pull/730
.. _#735: https://github.com/librosa/librosa/pull/735
.. _#750: https://github.com/librosa/librosa/pull/750
.. _#753: https://github.com/librosa/librosa/pull/753
.. _#727: https://github.com/librosa/librosa/pull/727
.. _#731: https://github.com/librosa/librosa/pull/731
.. _#734: https://github.com/librosa/librosa/pull/734
.. _#751: https://github.com/librosa/librosa/pull/751
.. _#755: https://github.com/librosa/librosa/pull/755

v0.6.1
------
2018-05-24

Bug fixes
  - `#677`_ `util.find_files` now correctly de-duplicates files on case-insensitive platforms. *Brian McFee*
  - `#713`_ `util.valid_intervals` now checks for non-negative durations. *Brian McFee, Dana Lee*
  - `#714`_ `util.match_intervals` can now explicitly fail when no matches are possible. *Brian McFee, Dana Lee*

New features
  - `#679`_, `#708`_ `core.pcen`, per-channel energy normalization. *Vincent Lostanlen, Brian McFee*
  - `#682`_ added different DCT modes to `feature.mfcc`. *Brian McFee*
  - `#687`_ `display` functions now accept target axes. *Pius Friesch*
  - `#688`_ numba-accelerated `util.match_events`. *Dana Lee*
  - `#710`_ `sequence` module and Viterbi decoding for generative, discriminative, and multi-label hidden Markov models. *Brian McFee*
  - `#714`_ `util.match_intervals` now supports tie-breaking for disjoint query intervals. *Brian McFee*

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 `core.stft` and `core.ifgram`. *Keunwoo Choi*
  - `#699`_, `#701`_ corrected documentation for `filters.semitone_filterbank` and `filters.mel_frequencies`. *Vincent Lostanlen*
  - `#704`_ eliminated unnecessary side-effects when importing `display`. *Brian McFee*
  - `#707`_ improved test coverage for dynamic time warping. *Brian McFee*
  - `#714`_ `util.match_intervals` matching logic has changed from raw intersection to Jaccard similarity.  *Brian McFee*


API Changes and compatibility
  - `#716`_ `core.dtw` has moved to `sequence.dtw`, and `core.fill_off_diagonal` has moved to
    `util.fill_off_diagonal`.  *Brian McFee*

.. _#716: https://github.com/librosa/librosa/pull/716
.. _#714: https://github.com/librosa/librosa/pull/714
.. _#713: https://github.com/librosa/librosa/pull/713
.. _#710: https://github.com/librosa/librosa/pull/710
.. _#708: https://github.com/librosa/librosa/pull/708
.. _#707: https://github.com/librosa/librosa/pull/707
.. _#705: https://github.com/librosa/librosa/pull/705
.. _#704: https://github.com/librosa/librosa/pull/704
.. _#701: https://github.com/librosa/librosa/pull/701
.. _#699: https://github.com/librosa/librosa/pull/699
.. _#688: https://github.com/librosa/librosa/pull/688
.. _#687: https://github.com/librosa/librosa/pull/687
.. _#684: https://github.com/librosa/librosa/pull/684
.. _#682: https://github.com/librosa/librosa/pull/682
.. _#680: https://github.com/librosa/librosa/pull/680
.. _#679: https://github.com/librosa/librosa/pull/679
.. _#677: https://github.com/librosa/librosa/pull/677

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
  - `#648`_ `feature.spectral_flatness`. *Keunwoo Choi*
  - `#633`_ `feature.tempogram` now supports multi-band analysis. *Brian McFee*
  - `#439`_ `core.iirt` implements the multi-rate filterbank from Chroma Toolbox. *Stefan Balke*
  - `#435`_ `core.icqt` inverse constant-Q transform (unstable). *Brian McFee*

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.

.. _#674: https://github.com/librosa/librosa/pull/674
.. _#671: https://github.com/librosa/librosa/pull/671
.. _#663: https://github.com/librosa/librosa/pull/663
.. _#646: https://github.com/librosa/librosa/pull/646
.. _#634: https://github.com/librosa/librosa/pull/634
.. _#630: https://github.com/librosa/librosa/pull/630
.. _#619: https://github.com/librosa/librosa/pull/619
.. _#616: https://github.com/librosa/librosa/pull/616
.. _#600: https://github.com/librosa/librosa/pull/600
.. _#597: https://github.com/librosa/librosa/pull/597
.. _#594: https://github.com/librosa/librosa/pull/594
.. _#593: https://github.com/librosa/librosa/pull/593
.. _#587: https://github.com/librosa/librosa/pull/587
.. _#648: https://github.com/librosa/librosa/pull/648
.. _#633: https://github.com/librosa/librosa/pull/633
.. _#439: https://github.com/librosa/librosa/pull/439
.. _#435: https://github.com/librosa/librosa/pull/435
.. _#666: https://github.com/librosa/librosa/pull/666
.. _#656: https://github.com/librosa/librosa/pull/656
.. _#642: https://github.com/librosa/librosa/pull/642
.. _#637: https://github.com/librosa/librosa/pull/637
.. _#636: https://github.com/librosa/librosa/pull/636
.. _#632: https://github.com/librosa/librosa/pull/632
.. _#628: https://github.com/librosa/librosa/pull/628
.. _#625: https://github.com/librosa/librosa/pull/625
.. _#622: https://github.com/librosa/librosa/pull/622
.. _#621: https://github.com/librosa/librosa/pull/621
.. _#620: https://github.com/librosa/librosa/pull/620
.. _#609: https://github.com/librosa/librosa/pull/609
.. _#598: https://github.com/librosa/librosa/pull/598
.. _#574: https://github.com/librosa/librosa/pull/574
.. _#627: https://github.com/librosa/librosa/pull/627

v0.5.1
------
2017-05-08

Bug fixes
  - `#555`_ added safety check for frequency bands in `spectral_contrast`. *Brian McFee*
  - `#554`_ fix interactive display for `tonnetz` visualization. *Brian McFee*
  - `#553`_ fix bug in `feature.spectral_bandwidth`. *Brian McFee*
  - `#539`_ fix `chroma_cens` to support scipy >=0.19. *Brian McFee*

New features
  - `#565`_ `feature.stack_memory` now supports negative delay. *Brian McFee*
  - `#563`_ expose padding mode in `stft/ifgram/cqt`. *Brian McFee*
  - `#559`_ explicit length option for `istft`. *Brian McFee*
  - `#557`_ added `show_versions`. *Brian McFee*
  - `#551`_ add `norm=` option to `filters.mel`. *Dan Ellis*

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*

.. _#523: https://github.com/librosa/librosa/pull/523
.. _#544: https://github.com/librosa/librosa/pull/544
.. _#556: https://github.com/librosa/librosa/pull/556
.. _#558: https://github.com/librosa/librosa/pull/558
.. _#564: https://github.com/librosa/librosa/pull/564
.. _#551: https://github.com/librosa/librosa/pull/551
.. _#557: https://github.com/librosa/librosa/pull/557
.. _#559: https://github.com/librosa/librosa/pull/559
.. _#563: https://github.com/librosa/librosa/pull/563
.. _#565: https://github.com/librosa/librosa/pull/565
.. _#539: https://github.com/librosa/librosa/pull/539
.. _#553: https://github.com/librosa/librosa/pull/553
.. _#554: https://github.com/librosa/librosa/pull/554
.. _#555: https://github.com/librosa/librosa/pull/555
.. _#569: https://github.com/librosa/librosa/pull/569

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 ``pitch_tuning``. *Hojin Lee*

New features
  - `#323`_ ``librosa.dtw`` dynamic time warping. *Stefan Balke*
  - `#404`_ ``librosa.cache`` now supports priority levels, analogous to logging levels. *Brian McFee*
  - `#405`_ ``librosa.interp_harmonics`` for estimating harmonics of time-frequency representations. *Brian
    McFee*
  - `#410`_ ``librosa.beat.beat_track`` and ``librosa.onset.onset_detect`` can return output in frames,
    samples, or time units. *Brian McFee*
  - `#413`_ full support for scipy-style window specifications. *Brian McFee*
  - `#427`_ ``librosa.salience`` for computing spectrogram salience using harmonic peaks. *Rachel Bittner*
  - `#428`_ ``librosa.effects.trim`` and ``librosa.effects.split`` for trimming and splitting waveforms. *Brian
    McFee*
  - `#464`_ ``librosa.amplitude_to_db``, ``db_to_amplitude``, ``power_to_db``, and ``db_to_power`` for
    amplitude conversions.  This deprecates ``logamplitude``.  *Brian McFee*
  - `#471`_ ``librosa.util.normalize`` now supports ``threshold`` and ``fill_value`` arguments. *Brian McFee*
  - `#472`_ ``librosa.feature.melspectrogram`` now supports ``power`` argument. *Keunwoo Choi*
  - `#473`_ ``librosa.onset.onset_backtrack`` for backtracking onset events to previous local minima of
    energy. *Brian McFee*
  - `#479`_ ``librosa.beat.tempo`` replaces ``librosa.beat.estimate_tempo``, supports time-varying estimation.
    *Brian McFee*
  

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:
        - ``librosa.cqt``: `resolution`
        - ``librosa.cqt``: `aggregate`
        - ``feature.chroma_cqt``: `mode`
        - ``onset_strength``: `centering`

  - 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`.


.. _#501: https://github.com/librosa/librosa/pull/501
.. _#480: https://github.com/librosa/librosa/pull/480
.. _#467: https://github.com/librosa/librosa/pull/467
.. _#450: https://github.com/librosa/librosa/pull/450
.. _#417: https://github.com/librosa/librosa/pull/417
.. _#416: https://github.com/librosa/librosa/pull/416
.. _#386: https://github.com/librosa/librosa/pull/386
.. _#371: https://github.com/librosa/librosa/pull/371
.. _#479: https://github.com/librosa/librosa/pull/479
.. _#473: https://github.com/librosa/librosa/pull/473
.. _#472: https://github.com/librosa/librosa/pull/472
.. _#471: https://github.com/librosa/librosa/pull/471
.. _#464: https://github.com/librosa/librosa/pull/464
.. _#428: https://github.com/librosa/librosa/pull/428
.. _#427: https://github.com/librosa/librosa/pull/427
.. _#413: https://github.com/librosa/librosa/pull/413
.. _#410: https://github.com/librosa/librosa/pull/410
.. _#405: https://github.com/librosa/librosa/pull/405
.. _#404: https://github.com/librosa/librosa/pull/404
.. _#323: https://github.com/librosa/librosa/pull/323
.. _#482: https://github.com/librosa/librosa/pull/482
.. _#459: https://github.com/librosa/librosa/pull/459
.. _#452: https://github.com/librosa/librosa/pull/452
.. _#446: https://github.com/librosa/librosa/pull/446
.. _#432: https://github.com/librosa/librosa/pull/432
.. _#407: https://github.com/librosa/librosa/pull/407
.. _#403: https://github.com/librosa/librosa/pull/403
.. _#402: https://github.com/librosa/librosa/pull/402
.. _#368: https://github.com/librosa/librosa/pull/368
.. _#352: https://github.com/librosa/librosa/pull/352



v0.4.3
------
2016-05-17

Bug fixes
  - `#315`_ fixed a positioning error in ``display.specshow`` with logarithmic axes. *Brian McFee*
  - `#332`_ ``librosa.cqt`` now throws an exception if the signal is too short for analysis. *Brian McFee*
  - `#341`_ ``librosa.hybrid_cqt`` properly matches the scale of ``librosa.cqt``. *Brian McFee*
  - `#348`_ ``librosa.cqt`` fixed 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*

New features
  - `#312`_ ``librosa.segment.recurrence_matrix`` can now construct sparse self-similarity matrices. *Brian
    McFee*
  - `#337`_ ``librosa.segment.recurrence_matrix`` can now produce weighted affinities and distances. *Brian
    McFee*
  - `#311`_ ``librosa.decompose.nl_filter`` implements several self-similarity based filtering operations
    including non-local means. *Brian McFee*
  - `#320`_ ``librosa.feature.chroma_cens`` implements chroma energy normalized statistics (CENS) features.
    *Stefan Balke*
  - `#354`_ ``librosa.core.tempo_frequencies`` computes tempo (BPM) frequencies for autocorrelation and
    tempogram features. *Brian McFee*
  - `#355`_ ``librosa.decompose.hpss`` now supports harmonic-percussive-residual separation. *CJ Carr, Brian McFee*
  - `#357`_ ``librosa.util.softmask`` computes numerically stable soft masks. *Brian McFee*

Other changes
  - ``librosa.cqt``, ``librosa.hybrid_cqt`` parameter `aggregate` is now deprecated.
  - Resampling is now handled by the ``resampy`` library
  - ``librosa.get_duration`` can now operate directly on filenames as well as audio buffers and feature
    matrices.
  - ``librosa.decompose.hpss`` no longer supports ``power=0``.

.. _#315: https://github.com/librosa/librosa/pull/315
.. _#332: https://github.com/librosa/librosa/pull/332
.. _#341: https://github.com/librosa/librosa/pull/341
.. _#348: https://github.com/librosa/librosa/pull/348
.. _#312: https://github.com/librosa/librosa/pull/312
.. _#337: https://github.com/librosa/librosa/pull/337
.. _#311: https://github.com/librosa/librosa/pull/311
.. _#320: https://github.com/librosa/librosa/pull/320
.. _#354: https://github.com/librosa/librosa/pull/354
.. _#355: https://github.com/librosa/librosa/pull/355
.. _#357: https://github.com/librosa/librosa/pull/357

v0.4.2
------
2016-02-20

Bug fixes
  - Support for matplotlib 1.5 color properties in the ``display`` module
  - `#308`_ Fixed a per-octave scaling error in ``librosa.cqt``. *Brian McFee*

New features
  - `#279`_ ``librosa.cqt`` now provides complex-valued output with argument `real=False`.
    This will become the default behavior in subsequent releases.
  - `#288`_ ``core.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
      - ``librosa.display.time_ticks``: `fmt` is now `time_fmt`
      - ``librosa.feature.chroma_cqt``: `mode` is now `cqt_mode`
      - ``librosa.cqt``, ``hybrid_cqt``, ``pseudo_cqt``, ``librosa.filters.constant_q``: `resolution` is now `filter_scale`
  - `#308`_ ``librosa.cqt`` default `filter_scale` parameter is now 1 instead of 2.

.. _#277: https://github.com/librosa/librosa/pull/277
.. _#279: https://github.com/librosa/librosa/pull/279
.. _#288: https://github.com/librosa/librosa/pull/288
.. _#294: https://github.com/librosa/librosa/pull/294
.. _#295: https://github.com/librosa/librosa/pull/295
.. _#300: https://github.com/librosa/librosa/pull/300
.. _#302: https://github.com/librosa/librosa/pull/302
.. _#308: https://github.com/librosa/librosa/pull/308

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_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
  - ``librosa.clicks`` sonifies timed events such as beats or onsets
  - ``librosa.onset.onset_strength_multi`` computes onset strength within multiple sub-bands
  - ``librosa.feature.tempogram`` computes localized onset strength autocorrelation
  - ``librosa.display.specshow`` now supports ``*_axis='tempo'`` for annotating tempo-scaled data
  - ``librosa.fmt`` implements the Fast Mellin Transform

Other changes
  - Rewrote ``display.waveplot`` for improved efficiency
  - ``decompose.deompose()`` now supports pre-trained transformation objects
  - Nullified side-effects of optional seaborn dependency
  - Moved ``feature.sync`` to ``util.sync`` and expanded its functionality
  - ``librosa.onset.onset_strength`` and ``onset_strength_multi`` support superflux-style lag and max-filtering
  - ``librosa.core.autocorrelate`` can now operate along any axis of multi-dimensional input
  - the ``segment`` module functions now support arbitrary target axis
  - Added proper window normalization to ``librosa.core.istft`` for better reconstruction 
    (`PR #235 <https://github.com/librosa/librosa/pull/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 ``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 ``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.1
------
2015-02-18

Bug fixes
   -  Fixed bug #117: ``librosa.segment.agglomerative`` now returns a numpy.ndarray instead of a list
   -  Fixed bug #115: off-by-one error in ``librosa.core.load`` with fixed duration
   -  Fixed numerical underflow errors in ``librosa.decompose.hpss``
   -  Fixed bug #104: ``librosa.decompose.hpss`` failed with silent, complex-valued input
   -  Fixed bug #103: ``librosa.feature.estimate_tuning`` fails 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_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.core``
   -  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.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.core.frames_to_time()`` and ``librosa.core.time_to_frames()``
   -  added ``librosa.util.pad_center()``
   -  added ``librosa.output.annotation()``
   -  added ``librosa.output.times_csv()``
   -  accelerated ``librosa.core.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.core.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.core.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.core.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.core.stft`` when calculating window size
   -  fixed ``librosa.core.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.core.logamplitude``
   -  color-blind-friendly default color maps in ``librosa.display.cmap``
   -  ``librosa.core.onset_strength`` now 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_frequencies`` to get CQT frequencies
   -  ``librosa.core.cqt`` basic constant-Q transform implementation
   -  ``librosa.filters.cq_to_chroma`` to convert log-frequency to chroma
   -  added ``librosa.core.fft_frequencies``
   -  ``librosa.decompose.hpss`` can 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``, and ``mfcc``
   -  new module: ``librosa.display``
   -  ``librosa.output.segment_csv`` => ``librosa.output.frames_csv``
   -  migrated frequency converters to ``librosa.core``
   -  new module: ``librosa.filters``
   -  ``librosa.decompose.hpss`` now supports complex-valued STFT matrices
   -  ``librosa.decompose.decompose()`` supports ``sklearn`` decomposition objects
   -  added ``librosa.core.phase_vocoder``
   -  new module: ``librosa.onset``; migrated onset strength from ``librosa.beat``
   -  added ``librosa.core.pick_peaks``
   -  ``librosa.core.load()`` supports offset and duration parameters
   -  ``librosa.core.magphase()`` to separate magnitude and phase from a complex matrix
   -  new module: ``librosa.segment``

Other changes
   -  ``onset_estimate_bpm => estimate_tempo``
   -  removed ``n_fft`` from ``librosa.core.istft()``
   -  ``librosa.core.mel_frequencies`` returns ``n_mels`` values by default
   -  changed default ``librosa.decompose.hpss`` window 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.ifgram`` now matches ``stft``
   -  changed default beat tracker settings
   -  migrated ``hpss`` into ``librosa.decompose``
   -  changed default ``librosa.decompose.hpss`` power parameter to ``2.0``
   -  ``librosa.core.load()`` now returns single-precision by default
   -  standardized ``n_fft=2048``, ``hop_length=512`` for most functions
   -  refactored tempo estimator

v0.1.0
------

Initial public release.