peterf@2: Changes peterf@2: ======= peterf@2: peterf@2: ##v0.3.1 peterf@2: peterf@2: Bug fixes peterf@2: peterf@2: - Fixed bug #117: `librosa.segment.agglomerative` now returns a numpy.ndarray instead of a list peterf@2: - Fixed bug #115: off-by-one error in `librosa.core.load` with fixed duration peterf@2: - Fixed numerical underflow errors in `librosa.decompose.hpss` peterf@2: - Fixed bug #104: `librosa.decompose.hpss` failed with silent, complex-valued input peterf@2: - Fixed bug #103: `librosa.feature.estimate_tuning` fails when no bins exceed the threshold peterf@2: peterf@2: Features peterf@2: peterf@2: - New function `librosa.core.get_duration()` computes the duration of an audio signal peterf@2: or spectrogram-like input matrix peterf@2: - `librosa.util.pad_center` now accepts multi-dimensional input peterf@2: peterf@2: Other changes peterf@2: peterf@2: - Adopted the ISC license peterf@2: - Python 3 compatibility via futurize peterf@2: - Fixed issue #102: segment.agglomerative no longer depends on the deprecated peterf@2: Ward module of sklearn; it now depends on the newer Agglomerative module. peterf@2: - Issue #108: set character encoding on all source files peterf@2: - Added dtype persistence for resample, stft, istft, and effects functions peterf@2: peterf@2: ##v0.3.0 peterf@2: peterf@2: Bug fixes peterf@2: peterf@2: - Fixed numpy array indices to force integer values peterf@2: - `librosa.util.frame` now warns if the input data is non-contiguous peterf@2: - Fixed a formatting error in `librosa.display.time_ticks()` peterf@2: - Added a warning if `scikits.samplerate` is not detected peterf@2: peterf@2: Features peterf@2: peterf@2: - New module `librosa.chord` for training chord recognition models peterf@2: - Parabolic interpolation piptracking `librosa.feature.piptrack()` peterf@2: - `librosa.localmax()` now supports multi-dimensional slicing peterf@2: - New example scripts peterf@2: - Improved documentation peterf@2: - Added the `librosa.util.FeatureExtractor` class, which allows librosa functions peterf@2: to act as feature extraction stages in `sklearn` peterf@2: - New module `librosa.effects` for time-domain audio processing peterf@2: - Added demo notebooks for the `librosa.effects` and `librosa.util.FeatureExtractor` peterf@2: - Added a full-track audio example, `librosa.util.example_audio_file()` peterf@2: - Added peak-frequency sorting of basis elements in `librosa.decompose.decompose()` peterf@2: peterf@2: Other changes peterf@2: peterf@2: - Spectrogram frames are now centered, rather than left-aligned. This removes the peterf@2: need for window correction in `librosa.frames_to_time()` peterf@2: - Accelerated constant-Q transform `librosa.cqt()` peterf@2: - PEP8 compliance peterf@2: - Removed normalization from `librosa.feature.logfsgram()` peterf@2: - Efficiency improvements by ensuring memory contiguity peterf@2: - `librosa.logamplitude()` now supports functional reference power, in addition peterf@2: to scalar values peterf@2: - Improved `librosa.feature.delta()` peterf@2: - Additional padding options to `librosa.feature.stack_memory()` peterf@2: - `librosa.cqt` and `librosa.feature.logfsgram` now use the same parameter peterf@2: formats `(fmin, n_bins, bins_per_octave)`. peterf@2: - Updated demo notebook(s) to IPython 2.0 peterf@2: - Moved `perceptual_weighting()` from `librosa.feature` into `librosa.core` peterf@2: - Moved `stack_memory()` from `librosa.segment` into `librosa.feature` peterf@2: - Standardized `librosa.output.annotation` input format to match `mir_eval` peterf@2: - Standardized variable names (e.g., `onset_envelope`). peterf@2: peterf@2: ##v0.2.1 peterf@2: peterf@2: Bug fixes peterf@2: peterf@2: - fixed an off-by-one error in `librosa.onset.onset_strength()` peterf@2: - fixed a sign-flip error in `librosa.output.write_wav()` peterf@2: - removed all mutable object default parameters peterf@2: peterf@2: Features peterf@2: peterf@2: - added option `centering` to `librosa.onset.onset_strength()` to resolve frame-centering issues with sliding window STFT peterf@2: - added frame-center correction to `librosa.core.frames_to_time()` and `librosa.core.time_to_frames()` peterf@2: - added `librosa.util.pad_center()` peterf@2: - added `librosa.output.annotation()` peterf@2: - added `librosa.output.times_csv()` peterf@2: - accelerated `librosa.core.stft()` and `ifgram()` peterf@2: - added `librosa.util.frame` for in-place signal framing peterf@2: - `librosa.beat.beat_track` now supports user-supplied tempo peterf@2: - added `librosa.util.normalize()` peterf@2: - added `librosa.util.find_files()` peterf@2: - added `librosa.util.axis_sort()` peterf@2: - new module: `librosa.util()` peterf@2: - `librosa.filters.constant_q` now support padding peterf@2: - added boolean input support for `librosa.display.cmap()` peterf@2: - speedup in `librosa.core.cqt()` peterf@2: peterf@2: Other changes peterf@2: peterf@2: - optimized default parameters for `librosa.onset.onset_detect` peterf@2: - set `librosa.filters.mel` parameter `n_mels=128` by default peterf@2: - `librosa.feature.chromagram()` and `logfsgram()` now use power instead of energy peterf@2: - `librosa.display.specshow()` with `y_axis='chroma'` now labels as `pitch class` peterf@2: - set `librosa.core.cqt` parameter `resolution=2` by default peterf@2: - set `librosa.feature.chromagram` parameter `octwidth=2` by default peterf@2: peterf@2: ## v0.2.0 peterf@2: peterf@2: Bug fixes peterf@2: peterf@2: - fixed default `librosa.core.stft, istft, ifgram` to match specification peterf@2: - fixed a float->int bug in peak_pick peterf@2: - better memory efficiency peterf@2: - `librosa.segment.recurrence_matrix` corrects for width suppression peterf@2: - fixed a divide-by-0 error in the beat tracker peterf@2: - fixed a bug in tempo estimation with short windows peterf@2: - `librosa.feature.sync` now supports 1d arrays peterf@2: - fixed a bug in beat trimming peterf@2: - fixed a bug in `librosa.core.stft` when calculating window size peterf@2: - fixed `librosa.core.resample` to support stereo signals peterf@2: peterf@2: Features peterf@2: peterf@2: - added filters option to cqt peterf@2: - added window function support to istft peterf@2: - added an IPython notebook demo peterf@2: - added `librosa.features.delta` for computing temporal difference features peterf@2: - new `examples` scripts: tuning, hpss peterf@2: - added optional trimming to `librosa.segment.stack_memory` peterf@2: - `librosa.onset.onset_strength` now takes generic spectrogram function `feature` peterf@2: - compute reference power directly in `librosa.core.logamplitude` peterf@2: - color-blind-friendly default color maps in `librosa.display.cmap` peterf@2: - `librosa.core.onset_strength` now accepts an aggregator peterf@2: - added `librosa.feature.perceptual_weighting` peterf@2: - added tuning estimation to `librosa.feature.chromagram` peterf@2: - added `librosa.core.A_weighting` peterf@2: - vectorized frequency converters peterf@2: - added `librosa.core.cqt_frequencies` to get CQT frequencies peterf@2: - `librosa.core.cqt` basic constant-Q transform implementation peterf@2: - `librosa.filters.cq_to_chroma` to convert log-frequency to chroma peterf@2: - added `librosa.core.fft_frequencies` peterf@2: - `librosa.decompose.hpss` can now return masking matrices peterf@2: - added reversal for `librosa.segment.structure_feature` peterf@2: - added `librosa.core.time_to_frames` peterf@2: - added cent notation to `librosa.core.midi_to_note` peterf@2: - added time-series or spectrogram input options to `chromagram`, `logfsgram`, `melspectrogram`, and `mfcc` peterf@2: - new module: `librosa.display` peterf@2: - `librosa.output.segment_csv` => `librosa.output.frames_csv` peterf@2: - migrated frequency converters to `librosa.core` peterf@2: - new module: `librosa.filters` peterf@2: - `librosa.decompose.hpss` now supports complex-valued STFT matrices peterf@2: - `librosa.decompose.decompose()` supports `sklearn` decomposition objects peterf@2: - added `librosa.core.phase_vocoder` peterf@2: - new module: `librosa.onset`; migrated onset strength from `librosa.beat` peterf@2: - added `librosa.core.pick_peaks` peterf@2: - `librosa.core.load()` supports offset and duration parameters peterf@2: - `librosa.core.magphase()` to separate magnitude and phase from a complex matrix peterf@2: - new module: `librosa.segment` peterf@2: peterf@2: Other changes peterf@2: peterf@2: - `onset_estimate_bpm => estimate_tempo` peterf@2: - removed `n_fft` from `librosa.core.istft()` peterf@2: - `librosa.core.mel_frequencies` returns `n_mels` values by default peterf@2: - changed default `librosa.decompose.hpss` window to 31 peterf@2: - disabled onset de-trending by default in `librosa.onset.onset_strength` peterf@2: - added complex-value warning to `librosa.display.specshow` peterf@2: - broke compatibilty with `ifgram.m`; `librosa.core.ifgram` now matches `stft` peterf@2: - changed default beat tracker settings peterf@2: - migrated `hpss` into `librosa.decompose` peterf@2: - changed default `librosa.decompose.hpss` power parameter to `2.0` peterf@2: - `librosa.core.load()` now returns single-precision by default peterf@2: - standardized `n_fft=2048`, `hop_length=512` for most functions peterf@2: - refactored tempo estimator peterf@2: peterf@2: ## v0.1.0 peterf@2: peterf@2: Initial public release.