Logical Inconsistencies

1.0 Introduction

Niente's check of logical inconsistencies within your FLAC music collection is a very subjective affair (as opposed to its detecting physical corruption, which is entirely objective). By this, I mean that in order to declare that something is inconsistent with something else, you have to have agreement about what "consistency" would look like: and for that, you need a set of agreed 'rules' about what makes for consistent data.

On this website, the 'agreed rules' are my Axioms of Classical Tagging, which I would urge you to read carefully if you haven't done so before now. Those axioms state that we should tag our FLACs with certain sorts of data in certain places; and that we should therefore expect to be able to compare what we find in place A with what is stored in place B, and so on. Niente uses this understanding of what to expect in order to detect when specific FLACs are tagged in unexpected ways.

It is quite possible that you do not agree with everything asserted in that article about tagging axioms. That's fine, but if you tag your FLAC files differently from what that article says should be done, then Niente isn't going to be of much use to you as a tool for detecting logical inconsistencies!

Let us, therefore, state here what Niente's 'rules' or expectations actually are. I will only summarise the key tenets of the Axioms article: as I say, you're encouraged to go read the entire thing to put everything in proper and complete context.

2.0 Niente's Expectations

Perhaps inevitably, we begin at Axiom 1, which states that the following tags are quasi-compulsory: COMPOSER, ARTIST, PERFORMER, ALBUM, GENRE, COMMENT, TRACKNUMBER, TITLE. Niente's simplest test for logical inconsistencies in your tagging strategy is therefore to check that all of these tags are, in fact, present in every single FLAC file it knows about. If it finds any missing, the Report Menu Option 3 ("Report on missing ot empty tags") will detail in which files the problems arise.

Next, Axiom 2 says that the contents of the ARTIST tag should match the contents of the COMPOSER tag, precisely. Niente will detect whenever this is not true. A classic case from my own music library: I tagged "Arrthur Honegger" as the ARTIST and "Arthur Honnegger" as the COMPOSER. The one extra 'n' in the COMPOSER tag's surname is sufficient to break Axiom 2 and Niente's Report Menu Option 8 will tell me this.

Meanwhile, Axiom 3 says that the complete set of performing artist details go into the COMMENTS tag. That is, if the album is called "Symphony No. 5 (Karajan - 1970)", we'd expect the COMMENTS tag to read something like 'Herbert von Karajan, Berlin Philharmonic Orchestra'. This, somewhat unfortunately, means that there's now a relationship between the COMMENTS and PERFORMER tags, arising from the operation of Axiom 6: if COMMENTS mentions 'Herbert von Karajan' somewhere in its long-form contents, the PERFORMER tag should do so too. Niente's Report Menu Option 6 will details any files for which this isn't true.

We'll skip over Axiom 4, which states that the GENRE tag should be short, sweet and highly fuctional. That's a qualitiative judgment which Niente is not able to make! As mentioned above for Axiom 1, Niente can report on files that are entirely missing a GENRE tag, but if the tag is full of complete horse radish, Niente will not see that as a problem!

Moving on, therefore, to Axiom 5: this  states that the ALBUM tag should be filled with an 'extended composition name', in the form of "actual composition name (distinguishing artist surname - recording year)". That is, you'd end up with something like "Symphony No. 5 (Karajan - 1970)". This is fine from the logical standpoint (see my article on The Primary Keys to Music for an explanation of why the extended composition name is logically required if we are to distinguish any recording fully from any other), but it sets up two new relationships which can go wrong if you are not ruthlessly consistent in your tagging: clearly the ALBUM tag now mentions the word 'Karajan', which we already know will appear somewhere in the COMMENTS and PERFORMER tags; additionally, the YEAR (or DATE) tag is also now mentioned in both the ALBUM and YEAR (or DATE) tags -so those need to be consistent, too. Accordingly, Report Menu Option 4 will check the YEAR/DATE tag and the ALBUM tag and make sure they mentiona four-digit year correctly in both places. Report Menu Option 7 will similarly compare the ALBUM and PERFORMER tags: if ALBUM mentions "Karajan", it will be regarded as an inconsistency if the PERFORMER tag doesn't also mention the word Karajan somewhere in itself. It's OK if PERFORMER is set to "Herbert von Karajan" and ALBUM mentions "Karajan". That's OK: Niente doesn't expect the distinguishing artist's complete name to appear in the ALBUM tag, after all. So long as the text appears anywhere in the PERFORMER tag, that's OK.

Note that Niente will *not* perform the logical third step: if ALBUM is related to PERFORMER, and PERFORMER is related to COMMENTS, then technically the distinguishing artist name in ALBUM should relate to something in the COMMENTS tag as well as in the PERFORMER tag. This is true, but Niente won't check it directly. As far as it's concerned, it's warned you about ALBUM/PERFORMER issues (see above for Axiom 3) and PERFORMER/COMMENTS ones (see above for Axiom 5), and thus feels sufficient checks have been performed. Eliminate those two categories of logical inconsistency and the ALBUM->COMMENTS issue resolves itself, basically.

Axiom 7 is another one that sets up relationships between tags that then need to be maintained and checked. It says that the recording year should go into the YEAR tag: but according to Axiom 5, it's also already in the ALBUM tag, so there's another new relationship between ALBUM and YEAR tags. If the ALBUM tag mentions 1970 and the YEAR tag says 1966, that's a logical inconsistency between two different tags, which Niente will report on using Report Menu Option 4.

Axiom 8 doesn't really require anything specific of any particular tag, so we can skip on over that one and move on to Axiom 9, which states that every unique recording should start with a track number 1 (or '01': it makes no difference). Report Menu Option 5 will list any recordings for which this isn't true. If you rip the second symphony off that 2-symphony Beethoven CD, for example, and thus acquire tracks numbered 5, 6, 7 and 8... Niente will list that as a problem on this report.

Axioms 10 to 15 are, again, qualitative in nature, so Niente cannot check for how grammatically you tag, or whether you use all the names a composer was given at birth, for example! We can, however, jump to Axiom 16, which states that album artwork should (a) be of good quality and size and (b) be embedded within the FLAC file, not merely left as an 'associated file' on disk (such as folder.jpg, which is commonly done on Windows PCs). Niente's Report Menu Option 9 will list all FLACs for which these two rules don't apply. If there's no embedded artwork at all, or if it's ridiculously too small or too large, Niente will report the fact here. Finally, though it's not mentioned anywhere in the Axioms article, Niente rather prefers square album art to non-square: so it will regard any embedded artwork that doesn't have matching width and height dimensions as a bit of a problem, too.

Moving away from the specific Axioms mentioned in my earlier article, : you can ask Niente to check the peak volume levels of all your recordings. If it finds any that could take a +1dB volume boost, it will note the fact and report accordingly. You don't have to apply such a volume boost, of course -and a recording that's quieter than it theoretically could be is not, of couese, a logical inconsistency in any case. Nevertheless, Niente assumes that -1.0dB is about as quiet as you'd want a recording to be and thinks anything quieter than that to be 'odd'! Reports Menu Option 10 will report on any files which are capable of having a non-distorting volume boost to them.

Next, and also not related to the Axioms: if you use my Semplice program to tag your FLAC files, you may choose to take advantage of its "NAMEBITS" functionality. That's a persistent configuration file parameter which defaults to including the sample rate and audio bit rate into the physical file name any time you finish tagging a recording's-worth of FLACs. That is, when NAMEBITS=1 (as it is by default), a file called 01-Allegro.flac will end up being saved as 01-Allegro-16-44100.flac: the sample bit depth (16 bits) and the sample rate (44.1kHz) are thus 'baked into' the physical file name. Doing this makes for a handy way of distinguishing between ordinary CD and higher resolution SACD rips when using nothing more than your operating system's file manager to browse your music collection. Niente provides Report Menu Option 11 to identify any files which do not include these bit-rate and sample-depth indicators in their physical file names.

Lastly, Semplice also allows you to 'concatenate' files making up a single recording into a single physical FLAC file, which is thereafter referred to as a 'SuperFLAC'. See the Semplice User Manual on the subject for details. Niente Reports Menu Option 12 will report on any recording which is still comprised of per-track FLACs, rather than a single SuperFLAC. Thus, if your 'Symphony No. 5' folder contains 4 separate tracks, one per movement, then that counts as 'multiple physical tracks per recording'; whereas if there's a single SuperFLAC that contains within itself the four separate movements, that would not be reported as an issue. Use of SuperFLACs is entirely optional, so unless you commit to doing it, you don't have to worry about the existence of the Option 12 report.

Summing all this up, therefore, we can say that Niente detects and reports on:

  • Missing COMPOSER, ARTIST, PERFORMER, ALBUM, GENRE, COMMENT, TRACKNUMBER and TITLE tags
  • DATE tags which don't match the date included in the ALBUM tag
  • TRACKNUMBER tags which don't start with '1' (or '01') for each new recording
  • PERFORMER tags which don't match the contents of the COMMENTS tag
  • PERFORMER tags which don't match the 'distinguishing artist' name included in the ALBUM tag
  • COMPOSER tags which don't match the ARTIST tag
  • Embedded ALBUM ART which is (a) non-square; (b) too small; (c) too large; or (d) non-existent
  • Recordings whose absolute peak loudness level permits of a volume boost of at least +1dB
  • Files whose names do not include sample rate and bit-depth identifiers
  • Recordings comprised of more than a single FLAC (i.e., per-track recordings, rather than SuperFLACs)

In this way, Niente applies most of the Axioms of Classical Tagging in a highly practical way. Naturally, if you don't tag your music precisely the way the Axioms suggest you should do, then some -or even many- of the Niente reports I've mentioned will be of no use to you. If you don't think the composer's name should go into the ARTIST tag, for example, then Niente's insistence on reporting on files where ARTIST doesn't equal COMPOSER is going to be of no use to you. Well: Niente can't change the way it was written, but you can of course ignore that particular report whilst continuing to make productive use of the other ones it can produce for you. Your tagging choices thus remain yours, though Niente's usefulness will vary depending on what choices you make.

3.0 When does Niente check for Logical Inconsistencies?

Niente only actually reports on all the various forms of logical inconsistency described above when you run the various reports to detail them (see Main Menu, Option 10).

Every one of those reports, however, are drawing on the contents of the Niente database -and that is only ever updated as a result of: (a) a full Integrity Check (Main Menu, Options 3) ;  (b) a differential Integrity Check (Main Menu, Option 4); or (c) a fast Integrity Check (Main Menu, Options 5).

Both the differential and full Integrity Checks first perform a complete refresh of Niente's database, so that its records of which FLACs exist are fully up-to-date. They then both do re-analysis of those FLAC files. A full Integrity Check not only checks for all the logical inconsistencies I've detailed above, but also performs a re-check of the physical integrity of the audio signal contained within those FLACs. It performs these physical and logical checks on every single FLAC listed in the database.

A differential Integrity Check also performs both logical and physical checks on files, but only for those FLACs which are already known to suffer from a logical or physical problem. That is, your first Niente report might have told you that you provided an incorrect recording year (one that doesn't agree between YEAR and ALBUM tags). Let's assume that was the only inconsistency discovered in your music collection. You therefore go an correct that, with whatever tagging software you have to hand. When you next perform a differential integrity check, this file alone will be re-analyxed, at which point the fix to the logical inconsistency will be discovered. Niente's records will be updated accordingly, and therefore when you then run the same report as before, it will now no longer report anything as being in error. Obviously, scanning just one FLAC in this way is going to be much faster than re-scanning your entire music collection.

A fast Integrity Check is an even faster way of doing a differential check, because it misses out re-checking for physical corruptions. A fast check only scans for logical inconsistencies. The re-analysis of the audio signal in the FLACs making up Wagner's Ring Cycle, for example, is a fairly substantial task: even a differential check is going to take (maybe) a few minutes to re-analyse all that music! If you are confident (perhaps because your ZFS file system and multiple backups makes you so!) that for now, you don't need to worry about physical corruption in your FLACs, then the fast Integrity Check lets you skip them, whilst still verifying your cataloguing/tagging is consistent and conformant. Note, too, that a fast Integrity Check does not re-scan your file system for new FLACs. It merely re-analyses all the FLACs it already knew about. If you've added new recordings to your collection or altered old ones, then the fast Integrity Check will not know of their existence, and it accordingly won't be able to check those new and changed files for inconsistencies: it's another reason the fast check is fast!

Be aware that Niente cannot report on album art issues or candidates for volume boosts until a Main Menu Option 6 or 7 check has been done, respectively. Each of these two 'special' scans is quite distinct from the full/differential/fast integrity checks, none of which check for album art issues or possible volume boosts. They therefore behave differently from those other three checks, in that whilst a full, fast or differential integrity check can be interrupted at any time (by pressing Ctrl+C), an album art or volume boost scan cannot be, without loss of data.

As an example: say the album art issues statistic on the Quick Aggregate Staistics report starts off showing 1,000 possible problems out of 15,000 possible recordings. You fix up some of these album art issues and ask for a new Main Menu Option 6 album art re-scan. Three minutes in, the scan has analysed 300 recordings. You press Ctrl+C to interrupt the scan. When you next run the Quick Aggregate Statistics report, it's quite likely to show 20 issues. What happened to the other 980? Well: the new scan hadn't reached those problematic FLACs yet, before you interrupted the analysis. An album art or volume boost analysis always starts by completely wiping its original records (where the full, fast and differential integiry checks do not). For both these scans, therefore, you always start out with zero data and only collect new data as far as the scan is permitted to run. Interrupt it and you'll now be dealing with a partial record-set.

The short version is: full, differential and fast integrity checks can be interrupted without major drama; album art and volume boost scans should not be interrupted.


|[Back to Front Page]|