Repository navigation
Recipes
Task-first reference. Each recipe lists what to put in Output/, what to run, and what you get back.
In: one audio file (.flac/.wav/.mp3) + one image (.png/.jpg/.jpeg)
./converter -fullOut: the full set — 8K/4K/3K/2K PNGs, NFT squares, sized JPGs, RF64 WAV, ALAC M4A, 320 kbps MP3, archival companions, main MP4, portrait short, and a full-song vertical when the track exceeds 58 s.
If you already have finished artwork at exact dimensions, name it Horizontal_8K.png (7680×4320) and it is used as-is for the main video. Add Vertical_8K.png (4320×7680) to control the short's framing instead of letting converter derive it.
In: two or more tracks named so they sort naturally (1 - Sun.mp3, 2 - Rain.wav, 10 - Storm.flac) + the same image inputs as above
./converter -albumEach track is loudness-normalized to −12 LUFS, joined with 2-second gaps into one RF64 album.wav, then run through the full pipeline.
Want the tracks joined in a specific order, without normalization? List them in album.txt in the project root and use -wavtoalbum or -mp3toalbum. Lines starting with # are comments; missing tracks are skipped with a warning.
In: one image + one audio-only file
./converter -shortYou get two framings, so you can pick per upload:
-
_8K_Short.mp4— the whole image fitted into the 4320×7680 frame, padded with black -
_8K_Short_CenterCut.mp4— the centre of the landscape 8K master scaled up to cover the frame and cropped, filling it edge to edge with no black
Both are capped at 58 s, and both gain a _FullSong companion when the audio runs longer — four shorts in total.
For NFT-style square artwork centered on black, use -nfttoshort instead. It prefers Vertical_8K.png, then an existing *_NFT8K.png, then derives one.
Already have a finished landscape MP4?
./converter -mp4toshortMeasure first:
./converter -loudscanYou get average, lowest, highest, and top-3-loudest LUFS across everything in Output/. Then normalize:
./converter -loudness # −12 LUFS (default)
./converter -loudness -14 # more dynamic targetOutputs are tagged with the target (_loudness_m12LUFS) so they never overwrite the source or collide with another target.
This applies one static gain — no EQ, no limiter, no compression. If a file has high peaks and a low average, converter caps the boost at the available peak headroom and warns that the result is peak-constrained rather than squashing the dynamics to hit the number.
./converter -masterProduces _mastered copies. Files already within policy are re-encoded losslessly; files outside it get two-pass loudnorm, falling back to one-pass. Targets come from MASTERING_TARGET_LUFS and friends — see Configuration.
Mastering only ever runs when you ask for it.
./converter -bass # +5 dB around 80 Hz
./converter -bass 60 7.5 # +7.5 dB at 60 Hz
./converter -bass 80 -5 # cut 0–80 Hz by 5 dBNon-default settings get a settings-specific suffix (_bass_60Hz_7_5dB, _bass_80Hz_m5dB) so variants never overwrite each other.
./converter -fade 10 # fade the final 10 s, keep full length
./converter -fadecut 5 10 # drop the last 5 s, then fade the new final 10 s
./converter -fadeout 1:30 10 # fade from 1:30 over 10 s, then stopTimes accept seconds, MM:SS, or HH:MM:SS. Each writes a settings-specific suffix.
./converter -noise # 30 s noise → 2 s silence → track → 2 s silence → 30 s noise
./converter -silence 45 # 45 s of silence before and afterNoise sections are normalized to −12 LUFS. MP4 inputs keep their video by holding the first and last frames.
./converter -run_pix # every image deliverable, per source image
./converter -aipix # just _8K.png and _4K.png
./converter -pngtonft # NFT squares from a *_8K.png
./converter -pngtojpg2mb # a 2 MB JPEG export from a *_8K.png./converter --hashRenames .wav, .flac, .mp3, and .mp4 to CRC-32-based filenames after verifying each one. A file that fails verification stops the run — add --continue-on-error to process what you can and get a summary of what failed.
./converter -flactomp3
./converter -wavtom4a
./converter -m4atoflacEvery audio path stages through the internal 24-bit / 96 kHz WAV standard, so quality does not depend on which conversion you pick. ./converter -matrix prints the supported combinations.
./converter -full --output-dir ~/Projects/single
./converter -loudscan --src-dir ~/Music/masters--src-dir sets where inputs are read, --out-dir where results are written, --output-dir sets both. --output-file names a single result and must land directly inside the output directory — subfolders are rejected.