Skip to content

Files on disk

Bryan Speelman edited this page Sep 8, 2026 · 1 revision

Everything for a record in progress lives under the vinyl directory from your configuration. The library is separate and holds only finished, tagged albums.

The pool

<vinyl>/
  raw/<slug>/              sides being worked on
    side-a.flac
    side-b.flac
  work/
    <slug>.spec.json       what the record is, and your corrections
    <slug>.plan.json       what the cutter reads
    .cache/                measured levels, per side
  review/<slug>/           cut tracks, before the import moves them
    01 Title.flac
  review/_clips-<slug>/    tick clips built for listening to
  archive/<slug>/          raw sides, kept
    side-a.flac
    _superseded/           sides replaced by a re-rip
    _punched/              library files and captures a punch replaced

A slug is the directory name for a record, made from the artist and album. It is shown under the names in the Rip panel before you start.

The two documents

Every record has both, written together whenever you save.

<slug>.spec.json is what the record is: artist, album, date, the release id it was fitted against, the tracklist with catalogue durations, and the corrections you made by ear.

<slug>.plan.json is what the cutter reads: one entry per track with its side, number, title, start and end.

The command-line fit, check, split, import and archive all take one of these as an argument.

Sizes

An LP side is roughly 300 MB as 24-bit/48 kHz FLAC, so a record is around 600 MB in raw/ and the same again in archive/ once it is put away. The measurement cache is small.

raw/ and review/ are cleared when a record is archived. archive/ is not, ever — the raw sides are what let you re-cut a record without playing it again.

A record in two places

A record being re-ripped has the new side in raw/ and the rest still in archive/. That is a normal state. Each side is resolved on its own, with raw/ winning where both exist.

Moving the pool

Change vinyl in the configuration and move the directory. Nothing stores an absolute path to it.

To adopt a pool whose measurement cache has a different directory name, set cache_name rather than re-measuring — the files are the same.

Your own directory

~/.config/ripdoctor/ holds the two files that are yours rather than generated:

config.toml    every setting; see Configuration
auth.json      the login for the web interface, password hashed

This is the directory to keep in version control or back up. Everything else is either the pool or recomputable.

Environment

RIPDOCTOR_DIR overrides where RipDoctor keeps its own generated, disposable state — caches and scratch files. It moves neither the pool nor the configuration; vinyl and ~/.config/ripdoctor/ are those.

BEETSDIR points beets at its configuration, and RipDoctor passes it down like any other environment variable.

Clone this wiki locally