Skip to content

Releases: arkrow/PyMusicLooper

PyMusicLooper v3.4.1

05 May 10:14
Compare
Choose a tag to compare

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

25 Apr 16:22
Compare
Choose a tag to compare

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

21 Mar 21:08
Compare
Choose a tag to compare

Added

  • New option in export-points: --fmt, to customize the exported loop points format. Options: samples (default), seconds, or time (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

20 Jan 13:59
Compare
Choose a tag to compare

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

20 Jan 10:52
Compare
Choose a tag to compare

Fixed

  • Import taglib only when required, isolating taglib ImportErrors to the affected functions only, instead of blocking the use of the entire library.

PyMusicLooper v3.2.2

03 Dec 20:15
Compare
Choose a tag to compare

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

01 Dec 17:17
Compare
Choose a tag to compare

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

01 Dec 00:19
Compare
Choose a tag to compare

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

09 Jul 13:15
Compare
Choose a tag to compare

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

07 Jul 15:55
Compare
Choose a tag to compare

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.