2020-07-22
- New Features
- #1203 Support for Carnatic and Hindustani notations. Brian McFee, Kaushik Sripathi Hatti, Kaustuv Kanti Ganguli
- librosa.hz_to_svara_c, librosa.hz_to_svara_h
- librosa.midi_to_svara_c, librosa.midi_to_svara_h
- librosa.note_to_svara_c, librosa.note_to_svara_h
- librosa.list_mela, librosa.list_thaat
- and librosa.display.specshow support.
- #1063 librosa.yin and librosa.pyin for fundamental frequency estimation. Benjamin van Niekirk
- #1018 Variable-Q transform librosa.vqt. Brian McFee, Frank Cwitkowitz
- #1059 libsamplerate support in librosa.resample. Brian McFee
- #1134 perceptual loudness weighting for B, C, D, and Z-weighting. Bea Steers
- #1149 key support and note-spelling in pitch<=>note conversion. Brian McFee
- #1150 new data loader, and expanded collection of example recordings. Brian McFee
- #1166 librosa.sequence.dtw can now return the step matrix. Frank Zaklow
- #1171 automatic precision inference for spectral transforms (stft, cqt) and explicit control for librosa.cqt. Brian McFee
- #1198 librosa.util.localmin for computing local minima. Brian McFee
- 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
- librosa.util.example_audio_file is now deprecated in favor of librosa.util.example.
- Bug fixes
- #1078 fixed edge-padding errors in librosa.feature.stack_memory. beantowel
- #1091 fixed joblib version requirements. Thor Whalen
- #1094 fixed STFT bug when using large window sizes. Frank Zalkow
- #1157, #1196 fixed an alignment bug in librosa.iirt. Frank Zalkow
- #1159 fixed a warm-up glitch in librosa.effects.preemphasis. Brian McFee
- #1179 fixed memory initialization in unit tests. Brian McFee
- Documentation
- #1068 Corrections to librosa.effects.pitch_shift documentation. Keunwoo Choi
- Other changes
- #1064 unit test suite modernized to support latest pytest. Brian McFee
- #1112 numba accelerated librosa.feature.stack_memory. Brian McFee
- #1120 added reference tuning for pitch conversion utilities. Julia Wilkins
- #1123 fixed Python requirement definition in installation script. Stefan Sullivan
- #1125 updates to librosa.util.frame to remove default parameters and relax contiguity restrictions. Brian McFee
- #1131 more stringent shape requirements on librosa.util.valid_audio. Brian McFee
- #1140 removed contiguity requirement for librosa.util.valid_audio. Brian McFee
- #1147 updates to librosa.display.specshow documentation. Brian McFee
- #1182 librosa.display.specshow now returns a QuadMesh object, rather than the axes handle. Brian McFee
- #1183 librosa.feature.chroma_cqt now uses higher CQT resolution by default. Brian McFee
- #1183 librosa.feature.tonnetz can now pass-through arguments to librosa.feature.chroma_cqt. Brian McFee
- #1186 librosa.display.cmap now returns binary colormaps for boolean data. Brian McFee
2020-01-13
- New Features
- Bug fixes
- Documentation
- Other changes
- #1050 expanded normalization modes in Mel basis construction. Brian McFee
2019-10-09
- New Features
- #966 librosa.util.frame now supports multidimensional data. Includes a new helper function librosa.util.stack for contiguous concatenation. Brian McFee
- #934 `librosa.griffinlim_cqt`: Phase retrieval from constant-Q magnitude spectra. Brian McFee
- #940 Enhanced compatibility with HTK's MFCC implementation: librosa.effects.preemphasis and lifter= parameter in MFCC. Brian McFee
- #949 librosa.util.shear utility for shear-transforming 2D arrays. Brian McFee
- #926 `librosa.reassigned_spectrogram`: time-frequency reassigned spectrogram. Scott Seyfarth
- 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
- #1004 Expose frame parameters in librosa.onset and librosa.feature.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 librosa.util.valid_audio now enforces memory contiguity. Vincent Lostanlen
- #963 Improved x-axis decoration types in librosa.display.waveplot. Vincent Lostanlen
- #960 Ensure memory contiguity of audio buffers after resampling. Brian McFee
- #957 Code-base audit for proper usage of librosa.times_like. Brian McFee
- #953 Deprecated librosa.ifgram in favor of librosa.reassigned_spectrogram. Brian McFee
- #950 Allow initial phase estimates for librosa.griffinlim methods. Brian McFee
- #949 Accelerated librosa.segment.lag_to_recurrence and librosa.segment.recurrence_to_lag. Deprecated librosa.util.roll_sparse. Brian McFee
- #930 A440= parameter has been deprecated across the library in favor of a standardized tuning= parameter. Brian McFee
2019-07-07
Note: the 0.7 series will be the last to officially support Python 2.7.
- New features
- #772 `librosa.stream`: Stream generator to process long audio files into smaller pieces. Brian McFee
- #845 `librosa.load`: Replaced the default audio decoder with pysoundfile, and only use audioread as backup. Brian McFee
- #843 `librosa.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.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.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.cqt and librosa.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.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.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.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
2019-02-13
- Bug fixes
- 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
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
2018-05-24
- Bug fixes
- #677 librosa.util.find_files now correctly de-duplicates files on case-insensitive platforms. Brian McFee
- #713 librosa.util.valid_intervals now checks for non-negative durations. Brian McFee, Dana Lee
- #714 librosa.util.match_intervals can now explicitly fail when no matches are possible. Brian McFee, Dana Lee
- New features
- #679, #708 librosa.pcen, per-channel energy normalization. Vincent Lostanlen, Brian McFee
- #682 added different DCT modes to librosa.feature.mfcc. Brian McFee
- #687 librosa.display functions now accept target axes. Pius Friesch
- #688 numba-accelerated librosa.util.match_events. Dana Lee
- #710 librosa.sequence module and Viterbi decoding for generative, discriminative, and multi-label hidden Markov models. Brian McFee
- #714 librosa.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 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
2018-02-17
- Bug fixes
- #663 fixed alignment errors in librosa.feature.delta. Brian McFee
- #646 librosa.effects.trim now correctly handles all-zeros signals. Rimvydas Naktinis
- #634 librosa.stft now conjugates the correct half of the spectrum. Brian McFee
- #630 fixed display decoration errors with cqt_note mode. Brian McFee
- #619 librosa.effects.split no longer returns out-of-bound sample indices. Brian McFee
- #616 Improved librosa.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 librosa.display.specshow. Brian McFee
- #594 librosa.dtw fixed a bug which ignored weights when step_sizes_sigma did not match length. Jackie Wu
- #593 librosa.stft properly checks for valid input signals. Erik Peterson
- #587 librosa.show_versions now shows correct module names. Ryuichi Yamamoto
- New features
- Other changes
- #674 Improved write_wav documentation with cross-references to soundfile. Brian McFee
- #671 Warn users when phase information is lost in dB conversion. Carl Thome
- #666 Expanded documentation for 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.
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
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
- #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.
2016-05-17
- Bug fixes
- #315 fixed a positioning error in librosa.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.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.
2016-02-20
- Bug fixes
- Support for matplotlib 1.5 color properties in the librosa.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 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
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
- 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 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
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
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.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.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
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).
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
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
- onset_estimate_bpm => estimate_tempo
- removed n_fft from librosa.istft()
- librosa.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.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.load() now returns single-precision by default
- standardized n_fft=2048, hop_length=512 for most functions
- refactored tempo estimator
Initial public release.