Firstly, I use foobar for my tagging QA and WSL for any filesystem checks I make (because I'm more comfortable scripting in Linux than I am Windows).
Once foobar is setup it's as "easy" as any other tagger, and the fact that it internally stores your tags in a database makes it very quick and powerful to use - and it enables you to run sql against your files to check and update your tags!
I use foobar for tagging, and have a very functional layout for it making it great for tagging and verification. If you'd like a hand to set it up as I have, let me know as it's pretty straight-forward (I can probably even send you the layout definition for you to load).
In this image you can see some of the tagging QA checks I have, and my foobar layout. foobar.jpg
The FLAC format stores the MD5 hash of the decoded audio internally for integrity checking, so the easiest way to check that is:
Code:
flac -wt 01.01.flac
If an error is encountered you'll see output like:
Code:
01.01.flac: *** Got error code 2:FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH
01.01.flac: ERROR while decoding data
state = FLAC__STREAM_DECODER_ABORTED
To modify your file so that the check should fail you can run something like this against one of your files (that you have copied somewhere)
Code:
printf "x01" | dd of="01.01.flac" bs=1 seek=2408448 count=1 conv=notrunc
If you're using foobar there's a component called foo_verifier that can perform this type of checking for you.
If your lossless files are CD rips you can go one step further and check against AccurateRip or CTDB with PerfectTunes or CUETools.
With regard the lossy files I think the only thing you can do (from an integrity point of view) is hash them once you've created them (and after every modification), store it in a file and compare the hashes every 6 months or so. I wrote something to do that for my library, but I'm sure there are other tools out there that do a similar job.
This is the basic tagging QA check I use in foobar, but I have others including those that check for missing replaygain and that the files are stored in the correct location.
Code:
ALBUMTYPE MISSING OR ALBUM MISSING OR ALBUM ARTIST MISSING OR (ALBUMARTISTSORT MISSING AND ALBUMARTISTSORTORDER MISSING) OR ARTIST MISSING OR (ARTISTSORT MISSING AND ARTISTSORTORDER MISSING) OR DISCNUMBER MISSING OR TOTALDISCS MISSING OR GENRE MISSING OR DATE MISSING OR ORIGINALDATE MISSING OR TRACKNUMBER MISSING OR TITLE MISSING OR ALBUMUNIQID MISSING OR DATEADDED MISSING OR "$strcmp($meta_num(artist),$max($meta_num(artistsort),$meta_num(artistsortorder)))" MISSING
It checks for missing tags and that the number of Artist tags matches the number of Artist Sort tags.
I also run QA checks on the filesystem for things like:
Each Disc folder has folder.jpg
Each Album folder has albumartist.jpg and back.jpg
CUE sheets only contain lines for FILE|TRACK|INDEX|PREGAP|REM DISCID
And it goes on :-)