All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added:
audiofile.has_video()
, which probes withmediainfo
if a file contains video. ReturnsFalse
without probing for WAV, FLAC, MP3, and OGG files
- Added:
audiofile.write()
can now create MP3 files - Changed:
audiofile
does now usesoundfile
to read MP3 files (2x speed increase), and to access metadata of MP3 files (up to 1000x speed increase) - Changed: depend on
soundfile>=0.12.1
- Changed: updated benchmark pages in documentation to latest versions of tested libraries
- Fixed: depend on
audmath>=1.3.0
- Added: support for Python 3.12
- Added:
pedalboard
to the benchmark section of the documentation - Changed: use Python 3.10 when benchmarking different libraries
- Fixed: avoid deprecation warning
by replacing
pkg_resources
internally withimportlib.metadata
- Removed:
aubio
from the benchmark section of the documentation
- Changed: evenly round
offset
andduration
after converting to samples inaudiofile.read()
andaudiofile.convert_to_wav()
for SND files - Fix:
offset
andduration
now behave the same independent of the incoming file format
- Fixed: missing
pytest
requirement indocs/requirements.txt
- Added:
normalize
argument toaudiofile.convert_to_wav()
- Added:
bit_depth
argument toaudiofile.convert_to_wav()
- Added:
overwrite
argument toaudiofile.convert_to_wav()
- Added: examples to the API documentation
- Added: example how to use
audresample.resample()
andaudresample.remix()
in the API documentation ofaudiofile.read()
- Added: the arguments
duration
andoffset
ofaudiofile.read()
andaudiofile.convert_to_wav()
can be specified in different units or samples and most other formats supported byaudmath.duration_in_seconds()
- Added: the arguments
duration
andoffset
ofaudiofile.read()
andaudiofile.convert_to_wav()
support negative values - Changed: if no output path is provided to
audiofile.convert_to_wav()
, it is derived from the input path by replacing the file extension with'wav'
- Fixed: ensure
audiofile.convert_to_wav()
creates identical result as callingaudiofile.read()
followed byaudiofile.write()
- Fixed: support for non WAV, FLAC, OGG files like MKA or MP4 on Windows network shares
- Added: support for Python 3.11
- Added: support for Python 3.10
- Changed: split API documentation into sub-pages for each function
- Removed: dependency on
pysox
- Changed: use
ffmpeg
ormediainfo
ifsox
binary is missing instead of raising an error - Changed: improve
FileNotFoundError
message whenffmpeg
ormediainfo
are required, but not installed - Fixed: always raise
RuntimeError
for broken files or missing files - Fixed: mention expected
FileNotFoundError
whenffmpeg
ormediainfo
are required, but not installed - Fixed: use
soundfile
for converting WAV, FLAC, OGG files withaudiofile.convert_to_wav()
- Removed: Python 3.6 support
- Fixed: raise
RuntimeError
for broken or empty non SND files
- Fixed:
audiofile.duration()
returns now0.0
for an empty WAV file with wrong file extension instead ofNone
- Added: support for Python 3.9
- Added: tests for Windows
- Added: tests for macOS
- Added:
sloppy
argument toaudiofile.duration()
for faster processing of non SND formats - Changed:
audiofile.write()
raisesRuntimeError
instead ofSystemExit
- Changed: added
sloppy=True
results when accessing metadata of MP3 and MP4 files in the benchmarks - Removed: deprecated precision argument from
audiofile.write()
- Fixed: make
dtype
keyword argument available inaudiofile.read()
- Fixed: allow for
duration=0.0
inaudiofile.read()
- Added:
bit_depth
to usage section of documentation - Fixed: handling of file names that include
~
or..
by usingaudeer.safe_path
- Added
audiofile.bit_depth()
which returns bit depth of WAV and FLAC files - Added:
bit_depth
argument toaudiofile.write()
- Deprecated:
precision
argument ofaudiofile.write()
, usebit_depth
instead
- Fixed: several typos in the documentation
- Added: more tests to increase code coverage to 100%
- Added: link to benchmark page in README
- Changed: tests now require 100% code coverage
- Added: benchmark results page in docs
- Fixed: multi-line release changelogs on Github
- Fixed: copy-button for bash examples
- Fixed: missing dependencies for publishing documentation
- Changed: use
audiofile.core
structure under the hood - Changed: use Github Actions for tests
- Changed: use Github Actions for automatic publishing
- Changed: host documentation as Github pages
- Removed: support for Python 2.7
- Fixed:
CHANGELOG
format for PyPI server
- Fixed: catch
SoxiError
inaudiofile.read()
- Fixed: test for more advanced audio files like OPUS, AMR, ...
- Changed: switch to keep a changelog format
- Changed: define package in
setup.cfg
- Fixed: module only package
- Changed: improve documentation
- Changed: switch to single
audiofile.py
module - Fixed: skip tests if download fails
- Fixed: metadata samples and duration for MP3 files
- Fixed: metadata for pypi.org
- Fixed: license statement in PyPI package
- Added: First public release