Releases: arkrow/PyMusicLooper
Releases · arkrow/PyMusicLooper
PyMusicLooper v3.4.1
Changed
- Updated dependencies.
- Minor internal changes for deprecated library functionalities/imports.
Fixed
- BPM is now correctly derived from librosa 0.10.2's updated
beat_track
function.
Full Changelog: v3.4.0...v3.4.1
PyMusicLooper v3.4.0
Added
- Added proper Python 3.12 support.
Removed
- Support for Python 3.8 has been removed. The minimum supported Python version for PyMusicLooper is now Python 3.9.
Maintenance
- Updated dependencies.
Full Changelog: v3.3.0...v3.4.0
PyMusicLooper v3.3.0
Added
- New option in
export-points
:--fmt
, to customize the exported loop points format. Options:samples
(default),seconds
, ortime
(mm:ss.sss).
Changed
- Minor internal code clean-up and refactoring.
- Updated dependencies.
Full Changelog: v3.2.4...v3.3.0
PyMusicLooper v3.2.4
Fixed
- Output directory is created only when needed for PyMusicLooper exports, instead of pre-emptively.
- The absolute path of the export file/directory is now always returned, even if the provided output directory is relative, for clarity.
PyMusicLooper v3.2.3
Fixed
- Import
taglib
only when required, isolatingtaglib
ImportErrors to the affected functions only, instead of blocking the use of the entire library.
PyMusicLooper v3.2.2
Fixed
- Fixed
pymusiclooper --version
reporting v3.1.0 instead of the actual package version; affects versions 3.2.0 and 3.2.1
PyMusicLooper v3.2.1
Changed
- The
extend
command now displays the file path of the extended audio file to the user instead of the output directory
Fixed
- Fixed all loops' created by the
extend
command being erroneously affected by the fade out parameter - Fixed minutes/seconds rounding issues with the
extend
command file naming scheme
PyMusicLooper v3.2.0
Added
- New command:
extend
. Export a longer, extended version of an audio track by looping it seamlessly to the desired length. - Additional option in
export-points
:--alt-export-top N
. Can be used to return the N top loop points; provides the same output as in interactive mode but without the table formatting.--alt-export-top -1
to export all. - Added
CLI_README.md
for a basic CLI overview/reference
Changed
- Playback progress bar now updates faster for smoother transitions
- Skip beat analysis if
--brute-force
is enabled, for slightly faster runtime - Simplified many internal interfaces and added type hints and documentation to most core functions
- Lazy load yt_dlp and sounddevice so that they are only imported when needed
- Updated many core dependencies, including yt-dlp to their latest version
- Improve
--debug
option with better exception debug output - Lowered the minimum supported Python version to 3.8, since it is already compatible
- Enabled initial Python 3.12 support
Fixed
- Fixed zero crossing algorithm offset potentially being out-of-bounds in very rare cases
PyMusicLooper v3.1.0
Added
- Playback progress bar showing current playback progress and time
Changed
- Candidate pruning now activates if there are 100 or more initial pairs, instead of 250 as in the previous version
Fixed
- Loudness and note difference threshold incorrectly swapped in candidate pair pruning
PyMusicLooper v3.0.0
Added
- New functionality:
tag
. Export metadata tags of loop points to a copy of the input audio file(s) - (credit: some of the implementation code was based on/inspired by RemedyTwo's fork) - New functionality:
play-tagged
. Reads the metadata tags of loop points from an audio file and plays it looping - New audio source option:
--url
. Can now load and process audio from a youtube link (or any stream supported by yt-dlp) - New loop point search options
--min-loop-duration
,--max-loop-duration
: added min loop duration and max loop duration (in seconds) as optional constraints to the CLI--approx-loop-position
: specify the approximate desired loop start and loop end in seconds, searching around those points only +/- 2 seconds--brute-force
: enables an alternative loop discovery mode that checks the entire audio track instead of the detected beats; useful in case the main algorithm does not yield the desired results.--disable-pruning
: disables the internal filtering of potential loop points
- New export option for split-audio command:
--format
, to change the format of the exported split audio files (currently supported formats: WAV, FLAC, OGG, MP3) - Official Python 3.10 and 3.11 support
Changed
- Complete re-write of the CLI with much better interface and usability, use
pymuisclooper --help
for the new commands and options or consult the README - Re-implemented playback using the python sounddevice library instead of mpg123 for better cross-platform compatibility
- Significant runtime improvement to the core loop search algorithm (now runs 10x faster).
- Better loop point alignment thanks to an internal implementation of Audacity's "At Zero Crossings" functionality (less cases of audio popping/clicking due to misaligned loop points)
- Much nicer formatting and interface in interactive mode thanks to the
rich
python package - Increased the minimum Python requirement to Python 64-bit >=3.9
Removed
- Multiprocessing option (
--n-jobs
). Batch mode operations are otherwise unaffected and work as if--n-jobs
was fixed to 1.