Releases: arkrow/PyMusicLooper
Releases · arkrow/PyMusicLooper
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.
PyMusicLooper v2.5.3
- Completely removed defunct preserve tags function and its associated errors
Release Edit [2023.12.07]
Uploaded pymusiclooper.exe
, a Windows x64 binary (packaged using pyinstaller
) based on the v2.5.3 release, due to the existence of some tools that depend on the legacy v2.x CLI. This binary is standalone and does not require Python.
Optional external dependencies: mpg123
(for pymusiclooper.exe
's own playback/preview through the terminal); ffmpeg
(adds support for additional file formats and proprietary codecs).
PyMusicLooper v2.5.2
- Hotfix for v2.5.1's redundant mpg123-related error message
PyMusicLooper v2.5.1
- Added workaround for libsndfile mp3 loading issue
- Fixed error handling when no loop points were found, when audio has not been loaded or when mpg123 is unavailable.
- Moved the --recursive, --flatten and --n-jobs into their own "Batch Options" CLI arguments category for clarity
PyMusicLooper v2.5.0
- Added option to print loop points to terminal STDOUT (contributed by Coolsonickirby).
- Project relicensed to MIT license as of v2.5+.
PyMusicLooper v2.4.0
- Temporarily disabled preserve_tags features to resolve dependency installation issues; pending re-implementation.
PyMusicLooper v2.0.0
- Removed
--json
export option in favor of the more versatile--txt
option - Performance improvements to beat comparisons as a result of using native numpy functions whenever possible
- Code refactoring and streamlining of internal functions
V2.0 Rationale: This release marks a milestone in stability over the v1.x versions, rather than a major update. Future major releases will be reserved for large changes in the code base (e.g. overhaul of the core algorithm), or breaking changes in API/shell commands.
PyMusicLooper v1.7.0
Changes since v1.6.0
- Added a
--txt
option to export aloop.txt
file compatible with LoopingAudioConverter - Recursive batch export now replicates the source directory tree structure by default to avoid name conflicts
- Added a
--flatten
option for recursive batch export to output to a single folder without replicating the source directory structure (previous behaviour) - Lowered note similarity threshold to improve loop point quality (from 10% to 8%)
- Renamed default output directory name from looper_output to Loops
Bug fixes
- Fixed JSON export bug
- Fixed a bug with non-recursive batch export.
PyMusicLooper v1.6.0
- Added -i/--interactive feature to CLI for manual loop previewing and selection
- Fixed an issue with the loop ranking algorithm triggering with lists having < 2 candidates
PyMusicLooper v1.5.0
- Batch command option removed
- Batch mode is now enabled automatically if the given path is a directory