Keeping Track of Which Version of a Song I Actually Played

这篇内容暂时只有 English 版本,以下是原文。

Six months ago I had 2,300 tracks in a working folder, and about forty of them existed in three or four variants each: original mix, extended edit, a louder remaster, my own trimmed version. Last month I played a set where I reached for what I thought was the extended intro and got the radio edit instead. Nothing broke, but I stood there for eight bars with nothing to mix into, and I decided to stop trusting filenames.

The fix was to stop treating the audio file as the source of truth and treat a small text sidecar as one. Every track in the folder gets a .meta file next to it, written by a script rather than by hand:

import pathlib, json, hashlib, subprocess

for p in pathlib.Path('library').rglob('*.flac'):
    h = hashlib.sha256(p.read_bytes()).hexdigest()[:16]
    dur = float(subprocess.check_output(
        ['ffprobe','-v','quiet','-show_entries','format=duration',
         '-of','csv=p=0', str(p)]))
    meta = {'sha': h, 'dur': round(dur,1),
            'variant': p.stem.split('__')[-1]}
    p.with_suffix('.meta').write_text(json.dumps(meta))

The important part is the variant field and the naming convention it reads from: Artist - Title__extended.flac, Artist - Title__radio.flac. I renamed the whole folder once, by hand, over two evenings, which was tedious but also the point — I had to look at every track and decide what it actually was. The hash catches the case where I re-export a file and forget which version replaced which.

Why a sidecar and not tags? Tags live inside the file, which means every re-encode or format conversion is a chance to lose them, and my player of choice rewrites tags in ways I don’t fully control. A sidecar is dumb and survives anything that copies files. The cost is real: two files per track, and if I move a track without its .meta the link breaks. I’ve accepted that because losing a hash is recoverable — losing a variant label mid-set is not.

Where this falls apart: files I got from elsewhere rarely follow my naming convention, so variant comes out as garbage and I have to fix it manually. Collaborators who send me edits don’t know the convention exists. And the script doesn’t tell me whether two files with different hashes are actually different audio or just different metadata — I found four pairs like that, same waveform, different tags, and I only caught them by ear.

What I haven’t solved: how do you handle variants that aren’t versions of the same track but are close enough that you’d never play both in one night? Right now I keep both and let the setlist decide, which feels like I’m deferring the problem rather than solving it.

0
赞同度 100% · 0 条评论 · 1 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。