Libraries & scanning

Point SoundChex at the folders your media lives in; it catalogues what it finds, identifies it, and keeps the library organised in conventions every other media tool already reads.

Watch folders

Two ways to set them:

  • Admin → Library settings → watch folders — the normal way.
  • LIBRARY_WATCH_FOLDERS in .env — absolute paths, comma-separated. On Windows, backslashes are fine (D:\Media\Music,D:\Media\Films); the split is on commas, so drive letters are never mistaken for separators.

Scanning

php artisan library:scan

Scans also run on a schedule once php artisan schedule:work is running (see Background workers), so day-to-day you just drop files into a watch folder and they appear.

First scan? Start small. A dozen files prove that paths resolve and playback works before you commit a whole collection. This matters double on Windows, where path handling is the most likely thing to differ.

What a scan does — and never does

  • Files are identified by their tags and, for music, by acoustic fingerprint (Chromaprint → AcoustID), then enriched from the metadata sources.
  • Nothing is moved out of a watch folder until it has been catalogued and identified.
  • Originals are never deleted.

How files are organised

The library uses the conventions Plex, Jellyfin and Emby already read, so your files stay legible to anything else you point at them:

TypeLayout
MusicArtist/Album/01 Track.flac
FilmsTitle (Year)/Title (Year).mkv
TVSeries/Season 01/Series S01E01.mkv
BooksEPUB, PDF and CBZ files, identified by their metadata

Four media types, one catalogue

Music, films, TV and books share a schema, a search box and a player. Resume points, history and watchlists behave identically for a song, an episode and a chapter. Video gets hardware transcoding, caption tracks and skip markers; books get highlights, private notes and OCR of scanned pages so their text is selectable and searchable.

If a scan misbehaves

SymptomCheck
Scan finds nothingWatch-folder paths — absolute, comma-separated, readable by the PHP process
Files catalogue but won't playFFmpeg on the PATH (ffmpeg -version)
Metadata never fills inphp artisan queue:work isn't running — enrichment is a background job
Artwork missing everywherephp artisan storage:link was skipped