harmonize
Create and synchronize transcoded copies of audio folders.
Transcodes FLAC files to MP3 or Opus with tags
Copies everything else as-is
Parallelized
Additional runs synchronize changes since the initial run
Configurable encoders
History
My audio library is a comprised of FLAC’s, MP3’s, cover images, and various metadata files - totaling roughly 500GB. This is not a problem when I’m on my desktop - wired into the same network as my server. However, my laptop and phone use often suffers from poor connectivity and limit storage capacities. Further, lossless audio often is a waste as the my laptop and phone used in less-than-ideal environments and equipment. Thus, I decided to use only MP3’s on those devices.
Previously, I was solving this with a combination of mp3fs and rsync. This served me well for a number of years, but had a few drawbacks for my uses.
Only MP3 - Cannot experiment with formats like Opus without implementing support in mp3fs’s C codebase.
Only CBR MP3 - LAME’s V0 often is indistinguishable from 320 CBR while reducing the file size by ~15%.
Uses FUSE - Makes containerization and portability more complicated.
Not Parallelized - On a system with eight logical cores and competent disk speeds, encoding a one file at a time is a gross inefficiency.
Harmonize transcodes to LAME V0, has no dependency on FUSE, and supports parallel copying and transcoding. While it currently only transcodes to MP3, it’s written in Python. This is far more accessible to modification for a Pythonista like myself.
Installation
If installing from PyPI or using the script directly, ensure the following are installed:
Python 3.6+
FLAC
LAME (when using mp3)
opusenc (when using opus)
Usage
usage: harmonize [-h] [--codec {mp3,opus}] [-n NUM_PROCESSES] [-q] [--version]
source target
positional arguments:
source Source directory
target Target directory
optional arguments:
-h, --help show this help message and exit
--codec {mp3,opus} codec to output as. encoder configuration may be
specified as additional arguments to harmonize
-n NUM_PROCESSES Number of processes to use
-q, --quiet suppress informational output
--version show program's version number and exit
Metadata
Release files for harmonize 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| harmonize-1.0.2.tar.gz | 5.9 kB | Details |
Release files / harmonize-1.0.2.tar.gz
| Download URL | harmonize-1.0.2.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7853c3592bbfaaa570a5180618b3047a219c50081f85115fd8f46f962be671db
|
|
BLAKE2b-256 checksum How to use checksums |
2e54c21f13166e4f374ee3b9c9c811bb3107d61f50531ba80730c6362bf21649
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
|