<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.bbritten.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.bbritten.com/feed.php">
        <title>BBritten.com - softwares:niente</title>
        <description>A Voyage Around My Ears</description>
        <link>https://www.bbritten.com/</link>
        <image rdf:resource="https://www.bbritten.com/_media/wiki/dokuwiki.svg" />
       <dc:date>2026-04-03T21:18:37+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/logicalcorruption"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/nenchange"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/nenconfig"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/nendbcreate"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/neninstall"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/nenintegrity"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/nenquick"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/nenreports"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/nenruntime"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/niente"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/niente/physicalcorruption"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.bbritten.com/_media/wiki/dokuwiki.svg">
        <title>BBritten.com</title>
        <link>https://www.bbritten.com/</link>
        <url>https://www.bbritten.com/_media/wiki/dokuwiki.svg</url>
    </image>
    <item rdf:about="https://www.bbritten.com/softwares/niente/logicalcorruption">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-05T20:30:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>logicalcorruption</title>
        <link>https://www.bbritten.com/softwares/niente/logicalcorruption</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;logical_inconsistencies&quot;&gt;Logical Inconsistencies&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/beethoven-inspecting01.jpg?w=220&amp;amp;tok=b6e235&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logical Inconsistencies&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logical_inconsistencies&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-99&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Niente&amp;#039;s check of &lt;em&gt;logical&lt;/em&gt; 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” &lt;em&gt;would&lt;/em&gt; look like: and for that, you need a set of agreed &amp;#039;rules&amp;#039; about what makes for consistent data.
&lt;/p&gt;

&lt;p&gt;
On this website, the &amp;#039;agreed rules&amp;#039; are my &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;Axioms of Classical Tagging&lt;/a&gt;, which I would urge you to read carefully if you haven&amp;#039;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 &lt;em&gt;expect&lt;/em&gt; in order to detect when specific FLACs are tagged in &lt;em&gt;unexpected&lt;/em&gt; ways.
&lt;/p&gt;

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

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

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;100-1637&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;niente_s_expectations&quot;&gt;2.0 Niente&amp;#039;s Expectations&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Perhaps inevitably, we begin at &lt;strong&gt;Axiom 1&lt;/strong&gt;, which states that the following tags are quasi-compulsory: COMPOSER, ARTIST, PERFORMER, ALBUM, GENRE, COMMENT, TRACKNUMBER, TITLE. Niente&amp;#039;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 &lt;strong&gt;Reporting → General Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 4 Missing tags&lt;/strong&gt; will detail in which files the problems arise.
&lt;/p&gt;

&lt;p&gt;
Next, &lt;strong&gt;Axiom 2&lt;/strong&gt; 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 &amp;#039;n&amp;#039; in the COMPOSER tag&amp;#039;s surname is sufficient to break Axiom 2 and Niente&amp;#039;s &lt;strong&gt;Reporting → Logical Issues Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 5 Inconsistent ARTIST/COMPOSER tags&lt;/strong&gt; will (and did!) tell me this.
&lt;/p&gt;

&lt;p&gt;
Meanwhile, &lt;strong&gt;Axiom 3&lt;/strong&gt; 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&amp;#039;d expect the COMMENTS tag to read something like &amp;#039;Herbert von Karajan, Berlin Philharmonic Orchestra&amp;#039;. This, somewhat unfortunately, means that there&amp;#039;s now a relationship between the COMMENTS and PERFORMER tags, arising from the operation of &lt;strong&gt;Axiom 6&lt;/strong&gt;: if COMMENTS mentions &amp;#039;Herbert von Karajan&amp;#039; somewhere in its long-form contents, the PERFORMER tag should do so too. Niente&amp;#039;s &lt;strong&gt;Reporting → Logical Issues Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 3 Inconsistent PERFORMER/COMMENT tags&lt;/strong&gt; will details any files for which this isn&amp;#039;t true.
&lt;/p&gt;

&lt;p&gt;
We&amp;#039;ll skip over &lt;strong&gt;Axiom 4&lt;/strong&gt;, which states that the GENRE tag should be short, sweet and highly functional. That&amp;#039;s a &lt;em&gt;qualitative&lt;/em&gt; judgement 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!
&lt;/p&gt;

&lt;p&gt;
Moving on, therefore, to &lt;strong&gt;Axiom 5&lt;/strong&gt;: this  states that the ALBUM tag should be filled with an &amp;#039;extended composition name&amp;#039;, in the form of “actual composition name (distinguishing artist surname - recording year)”. That is, you&amp;#039;d end up with something like “Symphony No. 5 (Karajan - 1970)”. This is fine from the logical standpoint (see my article on &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/articles/keystomusic&quot; class=&quot;wikilink1&quot; title=&quot;articles:keystomusic&quot; data-wiki-id=&quot;articles:keystomusic&quot;&gt;The Primary Keys to Music&lt;/a&gt;&lt;/strong&gt; 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 &amp;#039;Karajan&amp;#039;, 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, the &lt;strong&gt;Reporting → Logical Issues Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 1 Inconsistent PERFORMER/COMMENT tags&lt;/strong&gt; option will check the YEAR/DATE tag and the ALBUM tag and make sure they mention a four-digit year correctly in both places. Similarly, the &lt;strong&gt;Reporting → Logical Issues Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 4 Inconsistent PERFORMER/ALBUM tags&lt;/strong&gt; option will compare the ALBUM and PERFORMER tags: if ALBUM mentions “Karajan”, it will be regarded as an inconsistency if the PERFORMER tag doesn&amp;#039;t also mention the word “Karajan” somewhere. It&amp;#039;s OK if PERFORMER is set to “Herbert von Karajan” and ALBUM mentions “Karajan”. That&amp;#039;s OK: Niente doesn&amp;#039;t expect the distinguishing artist&amp;#039;s &lt;em&gt;complete&lt;/em&gt; name to appear in the ALBUM tag, after all. So long as the abbreviated ALBUM distinguishing artist name appears &lt;em&gt;anywhere&lt;/em&gt; in the PERFORMER tag, that&amp;#039;s OK.
&lt;/p&gt;

&lt;p&gt;
Note that Niente will &lt;strong&gt;not&lt;/strong&gt; 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&amp;#039;t check it directly. As far as it&amp;#039;s concerned, it&amp;#039;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.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Axiom 8&lt;/strong&gt; doesn&amp;#039;t really require anything specific of any particular tag, so we can skip on over that one and move on to &lt;strong&gt;Axiom 9&lt;/strong&gt;, which states that every unique recording should start with a track number 1 (or &amp;#039;01&amp;#039;: it makes no difference). The &lt;strong&gt;Reporting → Logical Issues Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 2 Inconsistent TRACK NUMBER tags&lt;/strong&gt; report will list any recordings for which this isn&amp;#039;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.
&lt;/p&gt;

&lt;p&gt;
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 &lt;strong&gt;Axiom 16&lt;/strong&gt;, 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 &amp;#039;associated file&amp;#039; on disk (such as folder.jpg, which is commonly done on Windows PCs). Niente&amp;#039;s &lt;strong&gt;Reporting → Other Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 1 Recordings with album art issues&lt;/strong&gt; report will list all FLACs for which these two rules don&amp;#039;t apply. If there&amp;#039;s no embedded artwork at all, or if it&amp;#039;s ridiculously too small or too large, Niente will report the fact here. Additionally, though it&amp;#039;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&amp;#039;t have matching width and height dimensions as a bit of a problem, too.
&lt;/p&gt;

&lt;p&gt;
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 you then run &lt;strong&gt;Reporting → Other Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 2 Recordings with possible volume boosts&lt;/strong&gt;, Niente will use the persistent configuration file setting for &amp;#039;Volume threshold&amp;#039; and review which recordings are quieter at their maximum than that.
&lt;/p&gt;

&lt;p&gt;
Next, and also not related to the Axioms: if you use my &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;Semplice&lt;/a&gt; program to tag your FLAC files, you may choose to take advantage of its configuration option to &amp;#039;force filenames to display bitdepth/sample rate&amp;#039;. That means that if a file starts off being called &amp;#039;01-Allegro.flac&amp;#039;, Semplice will adjust its physical file name to be something like &lt;strong&gt;&amp;#039;01-Allegro-16-44100.flac&amp;#039;&lt;/strong&gt;: the sample bit depth (16 bits) and the sample rate (44.1kHz) are thus &amp;#039;baked into&amp;#039; 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&amp;#039;s file manager to browse your music collection. Niente accordingly provides &lt;strong&gt;Reporting → Other Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 3 Files missing sample rates in names&lt;/strong&gt; to identify any files which do &lt;strong&gt;not&lt;/strong&gt; include these bit-rate and sample-depth indicators in their physical file names.
&lt;/p&gt;

&lt;p&gt;
Lastly, Semplice also allows you to &amp;#039;concatenate&amp;#039; files making up a single recording into a single physical FLAC file, which is thereafter referred to as a &amp;#039;SuperFLAC&amp;#039;. See &lt;a href=&quot;https://www.bbritten.com/softwares/niente/superflacs&quot; class=&quot;wikilink2&quot; title=&quot;softwares:niente:superflacs&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;softwares:niente:superflacs&quot;&gt;the Semplice User Manual on the subject for details&lt;/a&gt;. Niente&amp;#039;s &lt;strong&gt;Reporting → Other Reports&lt;/strong&gt; Menu &lt;strong&gt;Option 4 Albums with multiple physical files&lt;/strong&gt; will report on any recording which is still comprised of per-track FLACs, rather than a single SuperFLAC. Thus, if your &amp;#039;Symphony No. 5&amp;#039; folder contains 4 separate tracks, one per movement, then that counts as &amp;#039;multiple physical tracks per recording&amp;#039;; whereas if there&amp;#039;s a single SuperFLAC that contains within itself the four separate movements, that would &lt;em&gt;not&lt;/em&gt; be reported as an issue. Use of SuperFLACs is entirely optional, so unless you commit to doing it, you don&amp;#039;t have to worry about the existence of the Option 12 report.
&lt;/p&gt;

&lt;p&gt;
Summing all this up, therefore, we can say that Niente detects and reports on:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Missing COMPOSER, ARTIST, PERFORMER, ALBUM, GENRE, COMMENT, TRACKNUMBER and TITLE tags&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DATE tags which don&amp;#039;t match the date included in the ALBUM tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TRACKNUMBER tags which don&amp;#039;t start with &amp;#039;1&amp;#039; (or &amp;#039;01&amp;#039;) for each new recording&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PERFORMER tags which don&amp;#039;t match the contents of the COMMENTS tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PERFORMER tags which don&amp;#039;t match the &amp;#039;distinguishing artist&amp;#039; name included in the ALBUM tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; COMPOSER tags which don&amp;#039;t match the ARTIST tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Embedded ALBUM ART which is (a) non-square; (b) too small; © too large; or (d) non-existent&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Recordings whose absolute peak loudness level permits of a volume boost of at least +1dB&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Files whose names do not include sample rate and bit-depth identifiers&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Recordings comprised of more than a single FLAC (i.e., per-track recordings, rather than SuperFLACs)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
In this way, Niente applies most of the Axioms of Classical Tagging in a highly practical way. Naturally, if you don&amp;#039;t tag your music precisely the way the Axioms suggest you should do, then some -or even many- of the Niente reports I&amp;#039;ve mentioned will be of no use to you. If you don&amp;#039;t think the composer&amp;#039;s name should go into the ARTIST tag, for example, then Niente&amp;#039;s insistence on reporting on files where ARTIST doesn&amp;#039;t equal COMPOSER is going to be of no use to you. Well: Niente can&amp;#039;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&amp;#039;s usefulness will vary depending on what choices you make.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Niente&amp;#039;s Expectations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_s_expectations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1638-11617&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;when_does_niente_check_for_logical_inconsistencies&quot;&gt;3.0 When does Niente check for Logical Inconsistencies?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Niente only actually &lt;em&gt;reports&lt;/em&gt; on all the various forms of logical inconsistency described above when you run the various reports to detail them, using the many options found in the &lt;strong&gt;Reporting&lt;/strong&gt; menu.
&lt;/p&gt;

&lt;p&gt;
Every one of those reporting options, however, depend on &lt;em&gt;using&lt;/em&gt; the contents of the Niente database, and those are only created or updated as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; New recordings are only ever added to the database by taking the &lt;strong&gt;Database&lt;/strong&gt; Menu &lt;strong&gt;Options 2&lt;/strong&gt; or &lt;strong&gt;3&lt;/strong&gt; (“Wipe &amp;amp; re-load a database from scratch” or “Add/Remove music files incrementally”). The difference between the two options is that Option 2 wipes the database and re-populates from scratch it by having a fresh scan of your hard disk. Meanwhile, Option 3 leaves &lt;em&gt;existing&lt;/em&gt; recordings where they are and only adds &lt;em&gt;new&amp;lt;&lt;/em&gt; or &lt;em&gt;modified&lt;/em&gt; files into the database.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
In either case, the Database menu options only end up saying &amp;#039;These files exist&amp;#039;: it does not trigger &amp;lt;em&amp;gt;any&amp;lt;/em&amp;gt; analysis of the nature or metadata tags associated with those files.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Those files known to exist are inspected and analysed by taking the &lt;strong&gt;Integrity Checks&lt;/strong&gt; Menu, &lt;strong&gt;Options 1, 2&lt;/strong&gt; or &lt;strong&gt;3&lt;/strong&gt; (“Perform a full integrity check”, “Perform a differential integrity check” or “Perform a fast integrity check”).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The difference between these three options is simply this:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Full Check&lt;/strong&gt; = Wipe all existing records of physical and logical data about the FLACs listed in the database and re-compute them from scratch by re-reading every single FLAC (could be slow on a large collection of music files)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Differential Check&lt;/strong&gt; = Re-visit every music file which is known from previous checks to contain physical or logical inconsistencies or which has never previously been checked and re-compute its physical and logical characteristics from scratch (relatively fast as only &amp;#039;files known to be in error&amp;#039; are re-visited)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Fast Check&lt;/strong&gt; = Re-visit every music file which is known from previous checks to contain &lt;em&gt;only&lt;/em&gt; logical inconsistencies or which has never previously been checked and re-compute its logical characteristics from scratch (much faster, as not only are a sub-set of &amp;#039;files known to be in error&amp;#039; are re-visited, but time is not spent re-computing and re-comparing their physical characteristics: i.e., no hash-computation of the audio signal from within the files are performed)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
In all cases, an integrity check only ever inspects music files which are listed in the database. If you&amp;#039;ve added a new recording to your collection, for example, you&amp;#039;ll &lt;em&gt;first&lt;/em&gt; need to do an &amp;#039;Add/Remove files in a database&amp;#039; operation to get the new recording into the database at all; and &lt;em&gt;then&lt;/em&gt; you&amp;#039;d do a Differential or Fast integrity check.
&lt;/p&gt;

&lt;p&gt;
Be aware that the full, differential or fast integrity checks do not check volume or album art matters. If you want to report on those as potential problems you&amp;#039;ll first need to take one of the &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Options 4, 5&lt;/strong&gt; or &lt;strong&gt;6 or 7&lt;/strong&gt;(“Check album art for all files”, “Check album art for new files”, “Check all files for volume boosts” and “Check new files for volume boosts”) as a separate option. Album art checks always re-scan the entire collection of music files known to exist because it is &lt;em&gt;relatively&lt;/em&gt; fast. Volume boost scans, however, can take a long time to complete if every file is re-visited (Option 5), so Option 6 is provided to allow for volume scans to take place for files that have not previously had their volume levels checked. In every case, the art or volume checks can only analyse files that are mentioned in the database, so if you add a new recording to your collection, you&amp;#039;ll have to (1) Add/remove files in a database first; and then (2) run the art or volume checks. Only then can the &lt;em&gt;reports&lt;/em&gt; on possible art or volume problems pick up on the new data.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 When does Niente check for Logical Inconsistencies?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;when_does_niente_check_for_logical_inconsistencies&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;11618-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/2/299097f47f38c5eeb5a6d891c3c66819.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/nenchange">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-28T20:36:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nenchange</title>
        <link>https://www.bbritten.com/softwares/niente/nenchange</link>
        <description>
&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/beethoven-inspecting9.png?w=220&amp;amp;tok=4dc8ed&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;changelog&quot;&gt;Changelog&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
This page describes the changes made in each point release of Niente since its first release as &lt;strong&gt;version 4.00&lt;/strong&gt; on September 10th, 2024.
&lt;/p&gt;

&lt;p&gt;
Versions with dates attached have been released into the wild and made generally available: if an entry says &amp;#039;proposed for release&amp;#039;, it&amp;#039;s a best-guess as to when a release &lt;em&gt;will&lt;/em&gt; happen, but it&amp;#039;s not guaranteed to &lt;em&gt;actually&lt;/em&gt; happen on that date. It could slip a few weeks, or even happen earlier than scheduled, depending on circumstances.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Changelog&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;changelog&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;61-573&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;niente_version_405_-_march_28th_2026&quot;&gt;Niente Version 4.05 - March 28th, 2026&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Bug Fix&lt;/em&gt;&lt;/strong&gt;: Integrity checks were mis-handling the storing of ReplayGain information. The version invoked with command-line switches (e.g., &lt;strong&gt;niente --check-differential&lt;/strong&gt;) were simply unaware of the need to collect ReplayGain data at all; the version invoked with interactive menu options only collected ReplayGain data under certain circumstances. The code now collects ReplayGain data correctly in all appropriate circumstances, regardless of the method by which the code is invoked.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement&lt;/em&gt;&lt;/strong&gt;: Menus have had spaces removed from them, since they suggested meaning or significant grouping of options that was not really intended. The program logo is now used to display on the right-hand side, in a similar manner to both Semplice and Giocoso. Where once you had this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-24_at_12.28.51.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-03-24_at_12.28.51.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-24_at_12.28.51.png?w=600&amp;amp;tok=6e4962&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…now you&amp;#039;ll have this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-24_at_12.29.46.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-03-24_at_12.29.46.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-24_at_12.29.46.png?w=600&amp;amp;tok=298d4f&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The lettered options are still distinct from the others (as they perform one-off type program alterations, rather than data processing functions), but otherwise all menu options appear now undifferentiated. The right-hand panel is now entirely given over to displaying the program logo, rather pointlessly: that entire half of the display may disappear in a future release but has been left there for now, in case it might become useful in future.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement&lt;/em&gt;&lt;/strong&gt;: Niente is now “colour aware”: a new menu item in the Administration menu allows you to alter the colours assigned to each display element of the Niente program interface (such as the box- or line-drawing characters, the logo text, the menu option text and so on). In this respect, the program acquires the same colour management facilities that Semplice and Giocoso possess. The new menu option is on the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 6: Change the program colour scheme&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-27_at_10.41.29.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-03-27_at_10.41.29.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-27_at_10.41.29.png?w=600&amp;amp;tok=4c4b77&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The various program &amp;#039;drawing elements&amp;#039; are listed with a colour number assigned to each. The defaults can be restored by tabbing round to highlight the [Reset to Defaults] button. Any of the 16 colours can be assigned to any option, allowing this sort of thing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-27_at_10.48.02.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-03-27_at_10.48.02.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-27_at_10.48.02.png?w=600&amp;amp;tok=301970&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Exactly&lt;/em&gt; the same colour number assignment can also produce this result, however:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-27_at_10.48.51.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-03-27_at_10.48.51.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-03-27_at_10.48.51.png?w=600&amp;amp;tok=97ccb3&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…which is significantly less usable! The specific colours assigned, in other words, will render differently depending on your &lt;em&gt;terminal&amp;#039;s&lt;/em&gt; choice of colour profile, so some experimentation will be needed to avoid usability horrors!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Niente Version 4.05 - March 28th, 2026&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_version_405_-_march_28th_2026&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;574-3362&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;niente_version_404_-_february_28th_2026&quot;&gt;Niente Version 4.04 - February 28th, 2026&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
This is a significant release for Niente. The key areas to focus on are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Running on macOS (now a Tier 1 supported platform)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Running on Almalinux 9 and 10 (similarly, both are now Tier 1 supported platforms)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Visually more appealing screens when performing long-running operations&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All reporting now done by output to &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; documents, viewable in a separate browser&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Making it ReplayGain aware&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Some specifics:
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Major Enhancement&lt;/em&gt;&lt;/strong&gt;: Niente has been significantly re-written and re-factored to ensure it runs on macOS (tested on Tahoe on Apple Silicon and Monterey on Intel) and on both Almalinux 9 and 10.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Visual Appearance&lt;/em&gt;&lt;/strong&gt;: When performing long-running operations, such as performing an integrity check, a volume boost scan or a check of album art, Niente will now display progress with screens such as this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-19_at_12.48.55.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-19_at_12.48.55.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-19_at_12.48.55.png?w=600&amp;amp;tok=58b77e&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Compare that to how it looked in the previous version:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_detail/softwares/niente/screenshot_from_2026-02-10_17-16-06.png?id=softwares%3Aniente%3Anenchange&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_from_2026-02-10_17-16-06.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_from_2026-02-10_17-16-06.png?w=650&amp;amp;tok=e8dbe9&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Many such screens now have a graphical progress bar and an “ETA”: an &lt;em&gt;estimate&lt;/em&gt; (in Microsoft fashion, typically wildly wrong at the start of whatever process is being performed!) of when the operation is likely to take to complete.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Significant Enhancement&lt;/em&gt;&lt;/strong&gt;: All Niente&amp;#039;s reports are now produced as (hopefully!) professional-looking, responsive &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; documents in a web browser (from where they can be printed or exported to text files):
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-11_at_20.25.06.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-11_at_20.25.06.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-11_at_20.25.06.png?w=650&amp;amp;tok=a3ffa8&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Every report has been overhauled to make the SQL more robust logically and additional items in the &lt;em&gt;Other Reports&lt;/em&gt; menu mean that items on the Aggregate Statistics report have been renumbered correspondingly.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Removed Feature&lt;/em&gt;&lt;/strong&gt;: Since all Niente&amp;#039;s reports are now produced via a web browser, there is no need to configure a “Default terminal font (for reports)” in the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 1 : Edit Configuration File&lt;/strong&gt;. That configuration item has therefore been removed and, if the parameter is supplied by manually editing the configuration file, it is simply ignored. The same is true of the &amp;#039;Default font size (for reports)&amp;#039; parameter. 
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;New Feature&lt;/em&gt;&lt;/strong&gt;: A new configuration option to specify a &lt;strong&gt;Preferred browser&lt;/strong&gt; has been created. This can be set to be the name of any web browser &lt;em&gt;executable&lt;/em&gt; installed on your system (for example, &amp;#039;firefox&amp;#039; or &amp;#039;chromium&amp;#039;). This will then be the browser Niente tries to open its reports with. If you name something which doesn&amp;#039;t exist, your system&amp;#039;s default browser will be used as a fallback option. The same is true if you don&amp;#039;t add a value to the new parameter at all. Leaving it blank is actually the default value, too: it&amp;#039;s probably safer and more reliable to open reports with the system&amp;#039;s default browser than to attempt to name a browser executable that might be wrong or may not behave well in conjunction with Niente.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement/New Feature&lt;/em&gt;&lt;/strong&gt;: When performing an incremental search for new music files (&lt;strong&gt;Database&lt;/strong&gt; menu, &lt;strong&gt;Option 3&lt;/strong&gt;), a new check is performed to ensure that the folder being scanned for new files isn&amp;#039;t, in fact, substantially empty. If the selected music folder contains less than 80% of the records already in the database, that suggests something odd might be happening with the music folder. Rather than just go ahead and scan (and thus bulk-delete apparently now non-existent music files from the database), a warning message will be displayed. If you select &amp;#039;yes&amp;#039; to continue, fine: the scan will proceed. Any other response will abort the proposed incremental scan. For example, if your NAS mount failed to mount following a reboot and you hadn&amp;#039;t noticed this before attempting an incremental scan, this might help prevent the accidental wiping of &lt;em&gt;all&lt;/em&gt; your database records.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement&lt;/em&gt;&lt;/strong&gt;: Niente is now “ReplayGain aware”. Whenever a new integrity check is performed, the program will search for the presence of the REPLAYGAIN_ALBUM_GAIN tag inside each FLAC being analysed. If found, it is written into Niente&amp;#039;s TRACKS table. Collecting such data would be a bit pointless by itself, so to complement this new data, there&amp;#039;s a new report: under &lt;strong&gt;Other Reports&lt;/strong&gt;, a new option to produce a report on “Files missing ReplayGain data” has been created. Anything listed on that report might be a candidate for opening in Semplice and performing a metadata-only volume boost!
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Bug Fix&lt;/em&gt;&lt;/strong&gt;: Niente hasn&amp;#039;t been updated since April 2025: it was thus unaware of the existence of bbritten.com and kept trying to phone home to absolutelybaching.com: updates wouldn&amp;#039;t work as a consequence. This release itself actually suffers from that: a fresh installation is potentially the only way to obtain it in an automated fashion, as the menu option to update will look to the wrong server to work out if an update is available. Various other bits and pieces would fail for similar reasons: these have all now been fixed and the software points to this website&amp;#039;s servers correctly once more.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Niente Version 4.04 - February 28th, 2026&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_version_404_-_february_28th_2026&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3363-8487&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;niente_version_403_-_released_april_10th_2025&quot;&gt;Niente Version 4.03 - Released April 10th, 2025&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement&lt;/em&gt;&lt;/strong&gt;: whenever the program displays the database name, it truncates the name to just 10 characters. That&amp;#039;s now been increased to 25. It&amp;#039;s a purely cosmetic issue. On certain occasions, the name is still truncated to 10 characters for space constraint reasons. Whenever Niente needs to constrain the database name, it will now add an ellipsis to the name to indicate that display truncation has occurred (i.e., you&amp;#039;d see something like “My_long_da&lt;strong&gt;…&lt;/strong&gt;” when it&amp;#039;s working with a database called “My_long_database_name”).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement&lt;/em&gt;&lt;/strong&gt;: a new column called TRACKTITLE is now populated in the TRACKS table whenever any sort of integrity check is performed, thereby storing each track&amp;#039;s TITLE tag. This will allow advanced users to run SQL queries against the Niente database and discover logical integrity issues such as tempo markings being spelled incorrectly (Adajio, for example; or Vivahce). No provision for making such checks in-program is planned, however (though see new Option 4 on the Reporting menu, below). Note that the upgrade process merely creates the new column: &lt;strong&gt;it doesn&amp;#039;t populate it&lt;/strong&gt;. The new column will only get populated if you go on to do a new integrity check.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Bug fix&lt;/em&gt;&lt;/strong&gt;: In previous Niente versions, if you try to create a database that already exists and, when warned about this, you press the option to &amp;#039;Cancel&amp;#039;, you end up with Niente running without being &amp;#039;attached&amp;#039; to &lt;em&gt;any&lt;/em&gt; database at all. You could always fix this by manually opting to &amp;#039;Change Working Database&amp;#039; back to what you started with, but you shouldn&amp;#039;t really lose the database you were working with just because you cancelled an operation! This is now fixed: you &lt;em&gt;don&amp;#039;t&lt;/em&gt;now lose contact with your original database when cancelling out from the creation of a new one. If you are working with database X, attempt to create database Y and then cancel that operation, you will return to the main menu &amp;#039;attached to&amp;#039; and working with database X as before.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement&lt;/em&gt;&lt;/strong&gt;: In line with the way &lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Giocoso&lt;/a&gt; has worked for some time, if you press [Enter] on any of Niente&amp;#039;s main menu options, the first listed menu option will be executed. In other words, sit on the Database menu and press [Enter] and it will be as if you pressed &amp;#039;1&amp;#039; to create a new database; sit on the Reports menu and press [Enter] and the General Reports sub-menu will be displayed (and another [Enter] after that will trigger the running of the &amp;#039;Aggregate Statistics&amp;#039; report); and so on.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Enhancement&lt;/em&gt;&lt;/strong&gt;: A new &lt;strong&gt;Option 4&lt;/strong&gt; on the &lt;strong&gt;Reporting&lt;/strong&gt; menu allows you to type in complete SQL statements and thereby query any combination of columns in any of the tables contained within the currently-selected Niente database. It doesn&amp;#039;t replace the functionality inherent in programs such as &lt;a href=&quot;https://sqlitebrowser.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://sqlitebrowser.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Sqlitebrowser&lt;/a&gt;, but it does mean a basic dynamic query functionality is now built-in to the main Niente program itself. Deletes and updates via this mechanism are not permitted, however. Report contents are displayed in a separate xterm window, in the same way that existing &amp;#039;non-advanced&amp;#039; reports are.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Bug Fix&lt;/em&gt;&lt;/strong&gt;: In previous Niente versions, the statistic for files capable of being volume-boosted would disappear off the aggregate statistics report, regardless of whether you&amp;#039;d configured the &amp;#039;Report on volume boosts&amp;#039; to yes or no, every time you performed a new &amp;#039;check for volume boosts&amp;#039; integrity check. Now fixed: the statistic is either there or not, correctly, as specified in the configuration file. Performing new integrity checks does &lt;em&gt;not&lt;/em&gt; make the statistic disappear.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Minor Enhancement&lt;/em&gt;&lt;/strong&gt;: The &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 2&lt;/strong&gt; was used to download a copy of the GPLv2 licence from this site. If this site was down for maintenance, that would lock up Niente for the duration! The new version now only downloads the licence once, if it&amp;#039;s not already present on the system. It also now displays it within a quasi-graphical text viewer, rather than with the command line &amp;#039;less&amp;#039; program.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Bug Fix&lt;/em&gt;&lt;/strong&gt;: In rare circumstances, the file that tells Niente to use grep, sed and similar utilities was not populated correctly before attempting to use those utilities to parse text information extracted from FLAC file tags: garbled data resulted. Now fixed.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Bug Fix&lt;/em&gt;&lt;/strong&gt;: A feature introduced in Version 4.01 could result in a blank database file being created on merely launching Niente. The existence of this non-database file would then prevent you from creating an actual database file of the same name. Now fixed.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Bug Fix&lt;/em&gt;&lt;/strong&gt;: For unaccountable reasons, Niente forgot to install sqlite3 on Fedora; other distros were not affected. This meant that fresh installs on Fedora would “work” to let you create a database …and then promptly lose all trace of the database after it had been &amp;#039;created&amp;#039; (because it hadn&amp;#039;t actually been created at all, given the necessary software to do so was missing!), preventing all further use of it. Now fixed.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Niente Version 4.03 - Released April 10th, 2025&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_version_403_-_released_april_10th_2025&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;8488-13603&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;niente_version_402_-_released_october_12th_2024&quot;&gt;Niente Version 4.02 - Released October 12th 2024&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
This release implements a bunch of small bug fixes, mostly to do with how the &amp;#039;non-interactive&amp;#039; Niente operations are performed. For example, if you run the command &lt;strong&gt;niente4.sh –check-differential&lt;/strong&gt;, you&amp;#039;ll trigger a non-interactive differential integrity check: non-interactive because the main program window is not displayed as the check is performed. It (and its cousins) are intended for scheduling program functions via crontab. Unfortunately, the necessary environment variables were not being set correctly when these options were invoked and thus not-so-minor things such as extracting the correct bitdepth and sample rates from FLACs were not being performed correctly. I also took the opportunity to add some &amp;#039;progress dots&amp;#039; to the program output when in non-interactive mode: though you&amp;#039;re not likely to see them when the program is run via cron at 3AM, the &lt;em&gt;total&lt;/em&gt; lack of progress indication or output hitherto can be a bit unnerving when you&amp;#039;re testing things! Now you&amp;#039;ll see this sort of thing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241012_130533.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20241012_130533.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241012_130533.png?w=650&amp;amp;tok=6ae8fb&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Niente Version 4.02 - Released October 12th 2024&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_version_402_-_released_october_12th_2024&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;13604-14748&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;niente_version_401_-_released_october_8th_2024&quot;&gt;Niente Version 4.01 - Released October 8th 2024&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
For this first update since it&amp;#039;s release, an enhancement has been made to the Niente database, such that it will now contain a column called SAMPLE_RATE in the TRACKS table. Existing databases will have the new column &lt;em&gt;appended&lt;/em&gt; to the end of all the existing columns; freshly-created new databases will have the extra column embedded &lt;em&gt;within&lt;/em&gt; the other columns. The adjustment to the table structure happens automatically the first time Niente is run after the software upgrade has been applied. Actual &lt;em&gt;population&lt;/em&gt; of the new column with data only takes place once a new full, differential or fast integrity scan has been performed. (Note: a Niente database is not particularly significant, since it can be completely re-constructed by doing a fresh database creation, music scan and integrity check. This may take time, but it means the data in a Niente database is essentially fungible. Should you prefer, for example, you can simply delete your existing Niente database, create a fresh one and trigger fresh music scans and integrity checks to get the new column installed and populated &amp;#039;properly&amp;#039;. It&amp;#039;s a fundamental tenet of database normalisation theory, however, that the physical location of a column in a table is irrelevant for working with that table, so Niente won&amp;#039;t care whether the new column is integrated &lt;em&gt;within&lt;/em&gt; the table structure or &lt;em&gt;appended&lt;/em&gt; to it).
&lt;/p&gt;

&lt;p&gt;
SAMPLE_RATE is the counterpart to the BITDEPTH column, which has been there since Version 2 or thereabouts: for any given digital music file, Niente will record it as being &amp;#039;16&amp;#039; or &amp;#039;24&amp;#039; bit-depth as before, but will now &lt;strong&gt;also&lt;/strong&gt; record whether the music has been sampled at 44,100Hz (standard CD Audio), 48,000Hz (enhanced standard CD), 88,200Hz (high resolution digital audio) or even 192,000Hz (bonkers resolution for those with more money than hearing discrimination). Of course, if any other sample rate is detected apart from these &amp;#039;standard&amp;#039; ones, that will be stored too. This enhancement was suggested by a reader, Scott, to whom I&amp;#039;m grateful for the idea, though it now escapes me why I never considered capturing this data before: its utility is rather obvious, after all! For example, the first thing I was able to do (in &lt;a href=&quot;https://sqlitebrowser.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://sqlitebrowser.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;sqlitebrowser&lt;/a&gt;) was to filter my rows like so:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_163629.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20241006_163629.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_163629.png?w=650&amp;amp;tok=678899&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, I&amp;#039;m filtering for recordings which have a 16-bit bitdepth (which you&amp;#039;d normally expect to be standard CD audio) but also have a 96KHz sampling rate (which you&amp;#039;d expect from SACD rips or online high-res sources). That particular combination is so bizarre that I can only conclude that some CD ripping and/or post-processing has &amp;#039;gone awry&amp;#039; in some way. Not that this is easily fixed, but knowing about this at least means I now know that a re-rip of the relevant CDs is required. Thanks Scott &lt;img src=&quot;https://www.bbritten.com/lib/images/smileys/sad.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-(&quot; /&gt;  …&amp;lt;/joke&amp;gt;
&lt;/p&gt;

&lt;p&gt;
The new data is displayed whenever a Niente database is undergoing an integrity check:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_163720.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20241006_163720.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_163720.png?w=650&amp;amp;tok=6cd9c5&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The new line &amp;#039;Audio Data&amp;#039; displays both the bit-depth and sample rate determined by physical analysis of the digital music file&amp;#039;s contents.
&lt;/p&gt;

&lt;p&gt;
To complement this new data collection, a new &amp;#039;Logical Problems&amp;#039; Report item has been created, displaying digital files for which the sample rates and bit depths don&amp;#039;t appear to be sensible combinations.By “sensible”, Niente means: if bitdepth is 16, sample rate shouldn&amp;#039;t be higher than 48KHz (48,000 Hz); from the opposite way of looking at things, too, if the bitdepth is 24, the sample rate shouldn&amp;#039;t be lower than 48KHz.
&lt;/p&gt;

&lt;p&gt;
The new report is accessed from the Logical Issues Reports, Option 6 “Inconsistent Bit Depth/Sample Rates”:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_172220.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20241006_172220.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_172220.png?w=650&amp;amp;tok=396970&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The resulting detailed report contains content such as this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_172113.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20241006_172113.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_172113.png?w=650&amp;amp;tok=ce5b0b&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The Aggregate Statistics Report (General Reports, Option 1) has been adjusted to report on the row-count of this report:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_172756.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20241006_172756.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20241006_172756.png?w=650&amp;amp;tok=e441fa&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The new line on the report is the &amp;#039;L6&amp;#039; one. Bear in mind that it is at least &lt;em&gt;conceivable&lt;/em&gt; that a 24-bit, 44.1KHz recording exists, so that a number on this line of the aggregate statistics report doesn&amp;#039;t &lt;em&gt;necessarily&lt;/em&gt; represent a real problem (though, personally, I would definitely re-rip to more standard bitdepth/sample rate combos). Niente is just hard-coded to apply the rule that “either 16 bits and sample rate greater than 48KHz; or 24 bits and sample rate less than 48KHz equals &amp;#039;odd&amp;#039;”. I&amp;#039;m open to further enhancement requests if a finer-grained selection of bit depth/sample rate &amp;#039;problems&amp;#039; is felt necessary :)
&lt;/p&gt;

&lt;p&gt;
Finally, a cascading and corresponding change has been made to the &amp;#039;O3&amp;#039; line on that aggregate statistics report and its equivalent Other Reports, Option 3 &lt;strong&gt;Files missing bitdepths in names&lt;/strong&gt; detailed report. In the original Niente release, the program looked for the bitdepth number in the file name, and if it found it, said &amp;#039;fine, you&amp;#039;ve included the bitdepth in the name correctly&amp;#039;. It &lt;strong&gt;never&lt;/strong&gt; actually checked for the presence of the &lt;strong&gt;sample rate&lt;/strong&gt; in the file name &lt;em&gt;at all&lt;/em&gt;, though! 
&lt;/p&gt;

&lt;p&gt;
In other words, it assumed that if “24” or “16” was in the file name, you must have named things correctly and the sample rate was probably in there, too… but it never verified this. Of course, this meant that a &amp;#039;Symphony No. 16.flac&amp;#039; would pass the test: if the file was a 16-bit FLAC, the presence of &amp;#039;16&amp;#039; in the file name anywhere would count as a pass (and yes, I knew this was a bit of a hack-job when I wrote it: I was in a hurry, I think!) 
&lt;/p&gt;

&lt;p&gt;
In light of the new collection of sample rate data for music files, therefore, the rules for this report have been tightened up. The new version of the report knows both the bitdepth and sample rate from the Niente database: it expects them to be concatenated with a hyphen when constructing physical file names (as &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;Semplice&lt;/a&gt;, for example, would do for you automatically), so the report now looks for things that &lt;em&gt;don&amp;#039;t&lt;/em&gt; have text such as &amp;#039;16-44100&amp;#039; or a &amp;#039;24-88200&amp;#039; in their file names. A &amp;#039;symphony no. 16.flac&amp;#039; would thus now &lt;strong&gt;fail&lt;/strong&gt; the &amp;#039;do you have bitdepth and sample rates in your filename&amp;#039; test, as it absolutely should, where previously it would have passed it. Even a file called &amp;#039;Symphony No. 16. - 44100.flac&amp;#039; would fail, as the program expects &amp;#039;xxxxx-16-44100.flac&amp;#039; as an absolute pattern, though other bitdepths and sample rates are acceptable, depending on circumstances!)
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Niente Version 4.01 - Released October 8th 2024&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_version_401_-_released_october_8th_2024&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;14749-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/2/2db9b40a9a53b6c519d4bb62a4e5af87.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/nenconfig">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-24T13:48:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nenconfig</title>
        <link>https://www.bbritten.com/softwares/niente/nenconfig</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;the_persistent_configuration_file&quot;&gt;The Persistent Configuration File&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The Persistent Configuration File&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_persistent_configuration_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-48&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Niente&amp;#039;s behaviour is controlled by the various settings found in its persistent configuration file, which is a text file called &lt;strong&gt;$HOME/.local/share/niente4/txt/niente.conf&lt;/strong&gt;. Since it is merely a text file, it can be edited directly in any text editor you happen to favour. However, it consists of a set of &lt;em&gt;keyword=value&lt;/em&gt; parameters whose meaning and legal or default values may not be obvious to you, so whenever you want to alter its contents, it&amp;#039;s much better and safer to use Niente&amp;#039;s own specific menu option to do so: the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 1 : Edit Configuration File&lt;/strong&gt;. Taking that option will bring up a screen like this one:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_14.15.04.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_14.15.04.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_14.15.04.png?w=650&amp;amp;tok=0c8f31&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…in which textual prompts are paired with data entry fields. The text prompts use natural language wherever possible and the values you assign to them are also in natural language (for example, the screen uses yes or no answers, rather than binary 1 or 0 values). All possible configuration parameters are displayed and are editable on this one screen. The specific consequence of setting or unsetting any of these parameters should be determined by reading the relevant section of the User Manual: for the meaning of &amp;#039;Threshold (pixels) for small art&amp;#039;, for example, you&amp;#039;d want to consult &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;this page&lt;/a&gt; of the manual and, specifically, Section 4.1 since the parameter governs when Niente thinks a piece of embedded album art is too small for its own good!
&lt;/p&gt;

&lt;p&gt;
Generally, the default values for most parameters should be acceptable and safe out-of-the-box (though the &amp;#039;Default music folder&amp;#039; is liable to need customisation before you first run Niente). If you attempt to set a parameter to an illegal value (for example, setting the &amp;#039;default default degree of paralellism&amp;#039; to the literal text &amp;#039;as big as you can make it&amp;#039;), the default value (of 2) will be applied instead: degrees of parallelism require &lt;em&gt;numeric&lt;/em&gt; values, not textual essays!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;49-2061&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;parameters_default_values_and_effects&quot;&gt;2.0 Parameters, Default Values and Effects&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The following table lists all persistent configuration parameter names in both their &amp;#039;plain English&amp;#039; forms and the form in which they are stored within the configuration file. It shows the default value where one applies and briefly describes the effect the parameter has on the way Semplice works.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Parameter Friendly Name                 &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Parameter        &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Default Value  &lt;/th&gt;&lt;th class=&quot;col3 leftalign&quot;&gt; Legal Values                                                                                                          &lt;/th&gt;&lt;th class=&quot;col4 leftalign&quot;&gt; Program Effect                                                                                                                                                                                                                                                                                                                                                        &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Default music folder                    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; MUSICDIR         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; blank or null  &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any valid full path to a folder that contains somewhere within itself a set of FLACs you wish to check for integrity  &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; The default path that is used when scanning for FLACs to add to the database or to read during integrity checks                                                                                                                                                                                                                                                       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Default music database name             &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; DBNAME           &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; blank or null  &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any textual value, preferably without spaces                                                                          &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; The default database to open when launching Niente                                                                                                                                                                                                                                                                                                                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Stop accented characters conversion     &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UTFCHARS         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; no             &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; yes or no                                                                                                             &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; If you type é or ü (or other accented characters), sometimes those may be converted to plain, unaccented equivalents such as e or u. Set this to &amp;#039;yes&amp;#039; to stop that happening. It shouldn&amp;#039;t happen anyway in most properly-configured Linux environments.                                                                                                             &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Default degree of parallelism           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; PARALLELISM      &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 2              &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any numeric value, less than or equal to the number of logical CPUs on your system                                    &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; High parallelism speeds up some file scanning operations, but increases CPU load on your PC.                                                                                                                                                                                                                                                                          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Threshold (pixels) for small art        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; SMALLART         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 300            &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any numeric value                                                                                                     &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Sets the minimum size embedded album artwork can be before Niente reports it as being too small                                                                                                                                                                                                                                                                       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Threshold (pixels) for large art        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; LARGEART         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 1600           &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any numeric value                                                                                                     &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Sets the maximum size embedded album artwork can be before Niente reports it as being too big                                                                                                                                                                                                                                                                         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Should album art be square              &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; SQUAREART        &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; yes            &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; yes or no                                                                                                             &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; If a piece of embedded album art is detected to has a different height and width, is that to be considered a reportable problem or not?                                                                                                                                                                                                                               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Theshold (dB) for volume boosts         &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; VOLUMETHRESHOLD  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 2 (i.e., 2dB)  &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any positive numeric value                                                                                            &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Sets the minimum possible volume boost that should count as indicating a &amp;#039;problem&amp;#039; on the Potential Volume Boosts report                                                                                                                                                                                                                                              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Report on volume boosts                 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; MAXV             &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; yes            &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; yes or no                                                                                                             &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Include or exclude the count of possible volume boosts from the Quick Aggregate Statistics report                                                                                                                                                                                                                                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Report filenames without bitdepth data  &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; NAMEBITS         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; yes            &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; yes or no                                                                                                             &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Include or exclude the count of filenames that don&amp;#039;t appear to contain bitdepth data from the Quick Aggregate Statistics report                                                                                                                                                                                                                                       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Preferred browser                       &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; BROWSER          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; blank or null  &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; The name of any installed browser program                                                                             &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Specifies which browser to use to view Niente&amp;#039;s various reports. Blank or null means “use the system&amp;#039;s default browser”. If supplied, browser name values are not validated.                                                                                                                                                                                          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Use Kitty Graphics?                     &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; USEKITTY         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; no             &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; yes or no                                                                                                             &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Specifies whether to display the program logo graphic using Kitty graphics (&amp;#039;yes&amp;#039;) or sixel graphics (&amp;#039;no&amp;#039;), depending on the graphics capabilities of your terminal                                                                                                                                                                                                  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Size of the Program Logo                &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; LOGOSIZE         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 220            &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any positive numeric value                                                                                            &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Determines how big the program logo (the little picture of Beethoven) appears on the right-hand of the screen. The supplied value is used to determine both height and width, so a value of 180 would turn into a square image of 180 x 180 pixels.                                                                                                                   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Program Logo position (- or +)          &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; LOGOPOS          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 0              &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; Any numeric value, positive or negative                                                                               &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Shifts the program logo to the left (with negative numbers) or right (with positive ones), by as many characters as the number supplied. A value of -5 means &amp;#039;move it five characters to the left&amp;#039;; a value of 8 means &amp;#039;move it eight characters to the right&amp;#039;. Positive numbers should not use the &amp;#039;+&amp;#039; sign, but negative numbers will need to specify the &amp;#039;-&amp;#039; one.  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2417-10818&amp;quot;} --&gt;
&lt;p&gt;
Most of the parameters are, I think, self-explanatory and generally only ever change what is considered a &amp;#039;problem&amp;#039; when running reports: what is considered a too-quiet recording, for example; what is considered too-large a piece of embedded album art and so on.
&lt;/p&gt;

&lt;p&gt;
There are a couple of constraints on what is allowed to be entered for some of these parameters: if you set the small art threshold higher than the large art one, for example, then Niente will silently reverse the two numbers so that they make logical sense. It would not be sensible to regard a piece of artwork as too small if it&amp;#039;s more than 3000 pixels big, but too large if it&amp;#039;s more than 500 pixels, for example! But “too small at 500, too big at 3000” makes much more sense.
&lt;/p&gt;

&lt;p&gt;
Probably the two most crucial parameters are the default database name and music folder: these determine what database Niente opens by default as it is launched, and where it will go to scan for new music files. If you leave these two values blank, you&amp;#039;ll be prompted to supply suitable values every time you launch Niente, which becomes quite tedious really fast! What you type here, however, has to exist for the parameters to be meaningful: if you say your default database is called “NienteDB” when you&amp;#039;ve really created a database called “nientedb”, then the mismatch in the use of capital letters in the name will mean that you&amp;#039;ve told Niente to use a database by default which doesn&amp;#039;t actually exist: that will trigger the incessant launch-time prompt to select a database properly. Similarly, if you specific a default music folder which doesn&amp;#039;t physically exist on disk (or to which you have read permissions), then Niente will automatically wipe out your supplied value and leave the parameter set to blank: that again will trigger the launch-time prompt for a workable music folder.
&lt;/p&gt;

&lt;p&gt;
Note that the &amp;#039;Preferred browser&amp;#039; parameter does not &lt;em&gt;need&lt;/em&gt; to be set and, indeed, it is recommended that you &lt;strong&gt;don&amp;#039;t&lt;/strong&gt; set it. A blank value simply means “open reports in whatever my system&amp;#039;s default happens to be”, which is pretty much guaranteed to work. If you start typing names in, Niente doesn&amp;#039;t check that you&amp;#039;ve typed a valid executable name in: supply &amp;#039;fyrefox&amp;#039; by accident, for example, and Niente won&amp;#039;t be able to open any such browser… and will, accordingly, fall back to opening in your system&amp;#039;s default browser anyway.
&lt;/p&gt;

&lt;p&gt;
Specifying a non-default browser on macOS can be somewhat challenging, as the name by which a browser can be invoked might not be what you expect. Install the &lt;em&gt;Brave&lt;/em&gt; web browser, for example and you will &lt;strong&gt;not&lt;/strong&gt; get reports to open in it by typing the name &amp;#039;brave&amp;#039; into Niente&amp;#039;s preferred browser field. That&amp;#039;s because, as you&amp;#039;d see if you checked your Applications folder in Finder, the application is called “Brave Browser.app”: that means you need to type in “Brave Browser” in the Niente field, including the space and the capital letters. Similar misadventure will attend many attempts to specify a non-default browser and the recommendation is, accordingly, that &lt;em&gt;especially&lt;/em&gt; on macOS, you should leave this parameter blank and let the system default browser kick in.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Parameters, Default Values and Effects&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;parameters_default_values_and_effects&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2062-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/e/ebf10b2e3d525ed7d096e3dc3f77d752.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/nendbcreate">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-12T14:43:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nendbcreate</title>
        <link>https://www.bbritten.com/softwares/niente/nendbcreate</link>
        <description>
&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/inspecting05.jpg?w=220&amp;amp;tok=db83e8&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;database_creation_and_population&quot;&gt;Database Creation And Population&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Database Creation And Population&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;database_creation_and_population&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;52-98&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Niente is a database-driven program. It &lt;em&gt;requires&lt;/em&gt; that a database exists which records the existence of all the FLACs in your music collection. Apart from the initial discovery of these FLACs, Niente does not do file system visits or scans: when it&amp;#039;s producing a report, for example, it&amp;#039;s obtaining all the data in the report from its database, not by taking a fresh look at the FLACs directly. Similarly, when Niente performs a new integrity check, it&amp;#039;s reading the FLACs it knows about because they&amp;#039;re listed in its database: it&amp;#039;s not doing an on-the-fly scan for FLACs, but simply reading the contents of the ones the database tells it to visit. Without a database populated with details of which FLACs exist where, therefore, Niente can do nothing useful!
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s therefore important that, when you first run Niente, you immediately 1) create a fresh database and 2) populate that database with details of which FLACs exist in your music collection. That&amp;#039;s why the &lt;strong&gt;Database&lt;/strong&gt; menu is the one you always open Niente at when it is first launched.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;99-1180&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;database_structure&quot;&gt;2.0 Database Structure&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I&amp;#039;ll just pause at this point to explain the structure of the database that Niente uses. The main table is called &lt;strong&gt;TRACKS&lt;/strong&gt;: it lists each FLAC filename, along with 13 attributes or characteristics concerning each file, such as its PERFORMER tag, or what bit-depth the music in a FLAC was recorded at, or what the COMPOSER tag is set to, and so on. If you have 1000 individual FLAC files in your music collection, the Niente database will contain 1000 rows in the TRACKS table, one row per file. If you&amp;#039;ve got a single Beethoven symphony, comprised of 4 individual files, there&amp;#039;ll be four rows in the TRACKS table to describe each of them individually.
&lt;/p&gt;

&lt;p&gt;
In addition to TRACKS, there is a &lt;strong&gt;MAXVOLUMES&lt;/strong&gt; table. This will list each &lt;em&gt;folder&lt;/em&gt; of FLACs, rather than each FLAC file individually, and for each folder, the peak loudness of all the FLACs contained therein is recorded. So, say you have those 4 FLACs representing a Beethoven symphony: one is at -0.3dB from maximum loudness, the second is at -2.3db, the third is at -0.8dB and the fourth is at -1.2dB. This means that the maximum volume boost you could apply to all the files in that folder without introducing distortion is +0.3dB: that would boost file 1 to be at 0dB, the theoretical, non-distorting maximum possible volume.  In the MAXVOLUMES table, therefore, there will be just one row for the whole of (say) &amp;#039;Symphony No. 5&amp;#039;, and the peak loudness will be stored as -0.3dB, which is the largest possible volume boost that could be applied.
&lt;/p&gt;

&lt;p&gt;
Finally, the Niente database contains another table called &lt;strong&gt;ALBUMART&lt;/strong&gt;. This contains one row per FLAC file once more, and against each row is stored the horizontal and vertical dimensions (in pixels) for the album artwork that has been embedded within a FLAC, if any. This data then allows Niente to report on non-square, over-large or under-sized album art.
&lt;/p&gt;

&lt;p&gt;
The TRACKS table is populated by performing a &lt;strong&gt;Wipe/Load&lt;/strong&gt; or an &lt;strong&gt;Add/Remove&lt;/strong&gt; operation, using options 2 or 3 from the &lt;strong&gt;Database&lt;/strong&gt; menu, respectively. Doing so is extremely quick, even on large music collections, since the only data being collected is the full path and filename of each FLAC file in your collection. Collecting the detailed data that completes the 13 characteristics or attributes of each FLAC is what an &lt;em&gt;integrity check&lt;/em&gt; will do -and those take a long time to complete for large music collections.
&lt;/p&gt;

&lt;p&gt;
The ALBUMART and MAXVOLUMES tables are only populated by performing an album art or volume boost integrity check, using options 4, 5 or 6 from the &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu. These checks again take a long time to complete for large music collections. They each derive the information about what FLACs to interrogate from the contents of the TRACKS table, so if that table is empty, no album art or volume level checks can take place.
&lt;/p&gt;

&lt;p&gt;
From all of that, I hope you can see that TRACKS is the &amp;#039;driving table&amp;#039;: its contents are what tell all integrity checks are the files to scan and what, therefore, can subsequently be reported upon.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Database Structure&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;database_structure&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1181-4246&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;creating_the_database&quot;&gt;3.0 Creating the Database&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Creating a Niente database is a matter of just a second or two: it takes no time to create a file in which a bunch of empty tables exist, waiting for &lt;em&gt;subsequent&lt;/em&gt; data entry. It&amp;#039;s done by taking the &lt;strong&gt;Database&lt;/strong&gt; menu, &lt;strong&gt;Option 1: Create a music database&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_130441.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_130441.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_130441.png?w=650&amp;amp;tok=8d4908&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You are asked to provide a name for the database. I&amp;#039;d suggest keeping it short and sweet and without spaces inside the name (use underscores, as I&amp;#039;ve done in the above screenshot ,where you&amp;#039;d otherwise be tempted to type a space), though you can in practice use spaces and have as long a database name as you&amp;#039;d like. Long names will get variously truncated on subsequent screen displays, though the full name still gets used correctly internally.
&lt;/p&gt;

&lt;p&gt;
You cannot leave the database name blank: you&amp;#039;ll be told off if you try and be given another chance to type something sensible. If you type in a name of a database that already exists, that will also trigger the display of an error message, after which you&amp;#039;ll again be given another chance to type something meaningful: Niente simply won&amp;#039;t over-write an already-existing database.
&lt;/p&gt;

&lt;p&gt;
If you provide a never-before encountered, not-null database name then, in a matter of a second or two, a physical file of that name plus a “.db” extension is created for you in the &lt;strong&gt;$HOME/.local/share/niente4/db&lt;/strong&gt; folder, where all Niente databases live and a confirmation message is displayed:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_102758.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_102758.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_102758.png?w=650&amp;amp;tok=66c193&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Note the advice that the new database needs populating, which requires a scan of your music folders. We&amp;#039;ll get to that in a moment! For now, clicking OK (or pressing [Enter]) at this point returns you to the main menu.
&lt;/p&gt;

&lt;p&gt;
You can create as many databases this way as you like. You might, for example, want separate databases for your jazz collection, distinct from your classical one; or maybe you want to keep your 19th Century music in a different database from your 20th Century stuff… I wouldn&amp;#039;t particularly advise that approach, but you&amp;#039;re certainly allowed to do it. Only one of your databases can be the &amp;#039;default&amp;#039; database that Niente opens automatically every time it&amp;#039;s launched, but you can tap the letter &amp;#039;C&amp;#039; when viewing the database menu to &lt;em&gt;change&lt;/em&gt; what the &lt;strong&gt;working&lt;/strong&gt; or current database is at any time.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 Creating the Database&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creating_the_database&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4247-6631&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;setting_a_default_database&quot;&gt;4.0 Setting a Default Database&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Creating a Niente database results in this sort of thing happening on your file system:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_103302.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_103302.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_103302.png?w=650&amp;amp;tok=ed4fe5&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Each new database is represented by a separate file -and all databases start off at about 40KB small, so they&amp;#039;re trivial in size. Here, I have created three distinct databases: whenever you launch Niente in the future, you&amp;#039;ll be asked to pick one to work with:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_103442.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_103442.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_103442.png?w=650&amp;amp;tok=d4f0c9&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Each file stored in the $HOME/.local/share/niente4/db folder is listed on this form: your job is to up- and down-arrow until the one you want to open is highlighted and then hit the &amp;lt;strong&amp;gt;space bar&amp;lt;/strong&amp;gt; to select it. An asterisk appears next to the name and you can then click OK or press [Enter] to confirm the choice.
&lt;/p&gt;

&lt;p&gt;
At any time after launching Niente, too, you can tap the letter &amp;#039;C&amp;#039; whilst in the Database menu and the same form will appear, allowing you to &lt;em&gt;change&lt;/em&gt; which database is in-use for the remainder of your Niente session.
&lt;/p&gt;

&lt;p&gt;
If you don&amp;#039;t mind being prompted in this way every time you launch Niente, then fine: you don&amp;#039;t need to do anything else. If you only have one database, though, or if there&amp;#039;s one database that you use much more than any other, you may want to declare it the &lt;strong&gt;default&lt;/strong&gt; database. You do that in the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 1: Edit Configuration File&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_103844.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_103844.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_103844.png?w=650&amp;amp;tok=f53d0f&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You just arrow down to the &amp;#039;Default music database name&amp;#039; entry and type in the name of the database you want to use by default: just type the &lt;em&gt;database&lt;/em&gt; name, not the name of the physical file (in my example, the database name is &amp;#039;main&amp;#039;, the physical file is &amp;#039;main.db&amp;#039; and I therefore am typing in the &amp;#039;main&amp;#039; version, &lt;em class=&quot;u&quot;&gt;without the .db extension&lt;/em&gt;).
&lt;/p&gt;

&lt;p&gt;
Once the modified configuration parameters have been submitted (click OK or press [Enter]), subsequent launches of Niente will open the named database automatically, without prompting. You can still tap &amp;#039;C&amp;#039; on the Database menu to switch away from the default to another database, but program startup will, at least, have been streamlined.
&lt;/p&gt;

&lt;p&gt;
The database in use at any given time is listed on the main program display, on the third line of text at the top, in yellow:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_104201.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_104201.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_104201.png?w=650&amp;amp;tok=463c4c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…in this case, the &amp;#039;main&amp;#039; database has been opened and is in use.
&lt;/p&gt;

&lt;p&gt;
Which files get integrity checked, or reported on, depends entirely on the contents of the database that is in use whenever those options are taken.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.0 Setting a Default Database&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;setting_a_default_database&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6632-9250&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;populating_a_database&quot;&gt;5.0 Populating a Database&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;Creating&lt;/em&gt; a database was, as you saw, a matter of mere seconds, because hardly any work is required to create something that&amp;#039;s just 40KB on disk! It is an entirely separate matter to &lt;strong&gt;populate&lt;/strong&gt; the database with records of what FLAC files exist in your music collection. That&amp;#039;s something which is done by taking the &lt;strong&gt;Database&lt;/strong&gt; menu, &lt;strong&gt;Option 2: Wipe &amp;amp; re-load a daatabase from scratch&lt;/strong&gt; or &lt;strong&gt;Option 3: Add/Remove files incrementally&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
The difference between the two options is merely that Option 2 &lt;em&gt;wipes&lt;/em&gt; and then &lt;em&gt;populates&lt;/em&gt;, whereas Option 3 simply &lt;em&gt;populates&lt;/em&gt;. In other words, if you&amp;#039;ve got a database you&amp;#039;ve been using for some time and it contains details on 15,701 recordings, taking Option 2 deletes &lt;em&gt;all&lt;/em&gt; existing rows, scans the file system, finds 15,701 “new” files and adds them back to the database from scratch. Option 3, on the other hand, will scan the file system for files &lt;em&gt;which are not already in the database&lt;/em&gt; and &lt;strong&gt;adds&lt;/strong&gt; them to the existing 15,701 rows.
&lt;/p&gt;

&lt;p&gt;
Option 3 will also &lt;em&gt;delete&lt;/em&gt; from the database any rows which reference recordings which appear to no longer exist in the expected music folder. If you stored a FLAC in a folder called &amp;#039;Syymmphiny No. 5&amp;#039; for example, then that would be in the database under that folder name; you spot the error and change the folder name to &amp;#039;Symphony No. 5&amp;#039;… not only do you want the correct &amp;#039;Symphony No. 5&amp;#039; &lt;em&gt;added&lt;/em&gt; to the database, but you also want the now non-existent &amp;#039;Syymmphiny No. 5&amp;#039; folder &lt;strong&gt;removed&lt;/strong&gt; from the database: Option 3 will do &lt;em class=&quot;u&quot;&gt;both&lt;/em&gt; of these things for you.
&lt;/p&gt;

&lt;p&gt;
Be warned that this &amp;#039;tidy up apparently defunct entries&amp;#039; behaviour by Option 3 means that if you inadvertently ask for an incremental scan when your source folder is actually empty, the database will be &lt;em&gt;wiped&lt;/em&gt; of all its records (which can always be re-constructed, of course, by a fresh scan after sorting out your source folder). I find this happens a lot for me, because after a reboot of my Niente PC, it&amp;#039;s NFS mount (back to a NAS storing all my music) tends not to get successfully mounted (so the mountpoint ends up being just an empty folder. If I take Option 3 at this point, I thereby wipe my database, because the music files the database thinks &lt;em&gt;ought to&lt;/em&gt; exist now &lt;em&gt;don&amp;#039;t&lt;/em&gt; exist: Niente&amp;#039;s not smart enough to realise that this non-existence is a temporary state of affairs, rectifiable with a manual &amp;#039;mount&amp;#039; command! To avoid accidentally wiping your database because of this sort of thing, Version 4.04 of Niente adds an extra check as Option 3 is taken: if the number of FLACs detected in the proposed folder to scan is less than 80% of the records known to exist in the database, that&amp;#039;s at least 20% of your data that is about to be wiped. You&amp;#039;ll see a prompt warning you about this and giving you the option to back out gracefully without altering &lt;em&gt;anything&lt;/em&gt; in the database -or to proceed if you really know what you&amp;#039;re doing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20251112_144118.jpg&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20251112_144118.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20251112_144118.jpg?w=650&amp;amp;tok=67c2f8&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
A response of anything other than an explicit &amp;#039;yes&amp;#039; at this point terminates the proposed scan:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20251112_144211.jpg&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20251112_144211.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20251112_144211.jpg?w=650&amp;amp;tok=41505e&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Of course, when you&amp;#039;ve just created a database, it starts out with no rows in it at all and therefore everything found on disk will &amp;#039;look new&amp;#039; to Niente -meaning that, just after database creation, there&amp;#039;s no actual, practical difference between the two options: Option 3 is going to find 15,701 &amp;#039;new&amp;#039; files, just as Option 2 would do. Once you&amp;#039;ve populated a database, however, Option 2 is not something you&amp;#039;d want to take very often, if ever: you&amp;#039;ve gone through the pain of collecting data on 15,701 recordings and don&amp;#039;t really want to have to re-collect that data from scratch. If you simply want Niente to take note of the 5 new CDs you ripped and added to your collection yesterday, therefore, you&amp;#039;d take Option 3 to add the 5 new recordings to the existing database.
&lt;/p&gt;

&lt;p&gt;
If it helps to think of this way: Option 2 is a &amp;#039;start all over again&amp;#039; option whilst Option 3 is a &amp;#039;let&amp;#039;s modify what we already have &amp;#039; option.
&lt;/p&gt;

&lt;p&gt;
Whichever option you choose, you&amp;#039;ll have to tell Niente what &lt;strong&gt;folder structure&lt;/strong&gt; to scan to discover new FLACs. This needs to be a folder that contains directly within itself FLACs, or sub-folders (or sub-sub-sub-folders!) that then contain FLACs. There need to be some FLACs &lt;em&gt;somewhere&lt;/em&gt; inside the folder you mention at this point, though: you&amp;#039;ll be warned if no FLACs are detected at all.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Be warned that you can&amp;#039;t point a single database at two &lt;em&gt;different&lt;/em&gt; folder structures&lt;/em&gt;&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
That&amp;#039;s because the scan for files in the second folder structure will always &amp;#039;see&amp;#039; that the files in the first folder structure appear to no longer exist …and so records of them will be removed from the database. For example, suppose my folder structure is as follows:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_105424.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_105424.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_105424.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I have a &amp;#039;parent&amp;#039; folder called &lt;strong&gt;Music&lt;/strong&gt;, within which are three distinct &amp;#039;child&amp;#039; folders as shown. If I point Niente at /Music/classical, I cannot subsequently add FLACs found in the /Music/overflow folder to the same database. Doing so will certainly populate the database with recordings found in the /overflow folder &lt;em&gt;but it will simultaneously delete from its database anything that was previously found in the /classical folder&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
If I wanted both /classical and /overflow FLACs to be recorded in the same database, I&amp;#039;d have to point Niente at the &amp;#039;parent&amp;#039; folder /Music: then it will read both child folders at the same time and FLACs in both &amp;#039;branches&amp;#039; will be logged in the one database simultaneously. Of course, this would mean that my Niente database would &lt;em&gt;also&lt;/em&gt; pick up on any FLACs stored in the /non-classical folder, which would probably cause grief down the road (Niente doesn&amp;#039;t understand non-classical music very well!)
&lt;/p&gt;

&lt;p&gt;
So, your music&amp;#039;s &lt;em&gt;physical&lt;/em&gt; organisation needs to be logical and well thought out. In my case, I actually only want Niente to scan for classical music in my main collection, so pointing it at /Music/classical will do just fine… but I can only do that and get away with it because I planned my folder structure sensibly!
&lt;/p&gt;

&lt;p&gt;
Anyway, with all those warnings out of the way, I now take Database menu, Option 2:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110027.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_110027.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110027.png?w=650&amp;amp;tok=901ef5&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The dialog that now appears allows you to navigate around your file system until the &amp;#039;root&amp;#039; of your music&amp;#039;s folder structure is reached. The form always starts off in your home folder, which is why /home/hjr is the starting point in my case. You can use the top panel (the one where I&amp;#039;ve got the folder &amp;#039;hjr&amp;#039; highlighted in red) to navigate in a point-and-click sort of way: pressing the Space Bar whilst a folder name is highlighted there takes you &amp;#039;into&amp;#039; that folder. To go back up a folder, you can tab round to the second panel (the one showing /home/hjr in the above screenshot) and just start deleting the last part of the path displayed there: the top panel will change to reflect what&amp;#039;s typed in the second panel. In fact, you may find it easiest to tab to the second panel and simply type out the required path by hand: the top panel will merely give visual confirmation that you&amp;#039;ve typed it correctly!
&lt;/p&gt;

&lt;p&gt;
Be careful to actually &amp;#039;enter&amp;#039; the folder you want to be the root of your scan (by pressing the Space Bar when it&amp;#039;s highlighted. For example, here it looks as if I&amp;#039;ve selected the /classical sub-folder:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110631.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_110631.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110631.png?w=650&amp;amp;tok=19f30c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The word &amp;#039;classical&amp;#039; is highlighted in red at the top, after all. But look closely at the path typed in the lower panel: the word is &amp;#039;classic&amp;#039; which isn&amp;#039;t correct at all. If I clicked OK (or pressed Enter) at this point, the scan would fail completely, because an invalid path had been submitted. What I need to do instead is to tab round to the top panel and press the space bar with the &amp;#039;classical&amp;#039; item selected:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110840.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_110840.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110840.png?w=650&amp;amp;tok=70aa09&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Now I know I&amp;#039;m &amp;#039;in&amp;#039; the /classical sub-folder, because I can see all the sub-sub-folders that exist within it. I can therefore press [Enter] at this point, confident I&amp;#039;ve pointed Niente to the right place.
&lt;/p&gt;

&lt;p&gt;
Immediately I submit the new path, Niente runs off to the file system at that location and starts scanning for FLACs, either directly within it, or within sub-, or sub-sub-sub-sub folders of that &amp;#039;parent&amp;#039; folder:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_111020.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_111020.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_111020.png?w=650&amp;amp;tok=33a08d&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You get a brief visual confirmation of the folder being scanned and the database the scan results will be loaded into. This may not appear for very long, however, as the scan for FLACs is relatively quick to do: remember, you&amp;#039;re simply producing a list of file names at this point, not working out all their tagging internals and physical corruption status. So, very swiftly, the screen will change to something more like this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_111025.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_111025.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_111025.png?w=650&amp;amp;tok=202eac&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You get confirmation of how many FLACs were found in that location, and can then click [OK] or press [Enter] to return to the main menu. And that&amp;#039;s really all there is to populating your new database! It takes hardly any time to do, even on the largest of music collections.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5.0 Populating a Database&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;populating_a_database&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9251-18551&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;configuring_a_default_music_folder&quot;&gt;6.0 Configuring a Default Music Folder&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You&amp;#039;ve just seen that I&amp;#039;ve populated my database with knowledge about 15,701 FLACs. If I were to quit Niente at this point, rip some fresh CDs, relaunch Niente, and ask it to do a Database menu, Option 3 to add the new recordings to the database, I&amp;#039;d see this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110027.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_110027.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_110027.png?w=650&amp;amp;tok=901ef5&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s the same folder selection dialog we saw back in Section 5 when populating the database in the first time, starting once again in my $HOME folder. Niente doesn&amp;#039;t &lt;em&gt;remember&lt;/em&gt; between runs which music folder you pointed it to before, in other words. That&amp;#039;s not especially an issue: as you can see, it will happily prompt you to remind it every time you ask to do a new file scan. Nevertheless, it&amp;#039;s not very convenient!
&lt;/p&gt;

&lt;p&gt;
Fortunately, you can fix this issue by setting a &lt;em&gt;default&lt;/em&gt; music folder in Niente&amp;#039;s persistent configuration file, using the &lt;strong&gt;Administration&lt;/strong&gt; menu &lt;strong&gt;Option 1&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_111917.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_111917.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_111917.png?w=650&amp;amp;tok=b7c218&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You simply type in the correct, full path to the &amp;#039;parent&amp;#039; music folder in the first of the parameter fields, then click [OK] or press [Enter] to submit the new value. &lt;strong&gt;No validation of your entry is made&lt;/strong&gt;: Niente takes you at your word and if you type in an invalid path or folder name, it&amp;#039;s not going to check your homework for you! The consequences will be a problem, though: if you type in an invalid path and then go and do a Database menu Option 3 to add new recordings to your database, you&amp;#039;ll actually only achieve the wiping out of the existing records in that database! That&amp;#039;s because Niente won&amp;#039;t find new recordings in the default path (because it was typed in incorrectly), so won&amp;#039;t be able to add anything. But it will also not find any of the existing recordings in the default path (because it doesn&amp;#039;t actually exist!) and so will delete them all.
&lt;/p&gt;

&lt;p&gt;
So: make sure you type in a &lt;em&gt;valid&lt;/em&gt; full path to your music collection, please!
&lt;/p&gt;

&lt;p&gt;
Once you&amp;#039;ve set a correct default music folder in this way, you can take Database menu Options 2 or 3 without being prompted for a working music folder: the default is assumed to be the &amp;#039;working&amp;#039; folder for this session. Should that ever not be true, you can tap the letter &amp;#039;F&amp;#039; whilst in the Database menu and &lt;em&gt;change&lt;/em&gt;the working music folder. So non-default databases and non-default music folders are always selectable, should you need to.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6.0 Configuring a Default Music Folder&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuring_a_default_music_folder&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;18552-20984&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;wiping_a_database&quot;&gt;7.0 Wiping a Database&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Database&lt;/strong&gt; menu, &lt;strong&gt;Option 4&lt;/strong&gt;: Wipe a music database shouldn&amp;#039;t really be needed very often, if at all. It literally deletes all data out of the TRACKS, ALBUMART and MAXVOLUMES table (as ever, wiping the &lt;em&gt;database&lt;/em&gt; has &lt;strong&gt;zero effects&lt;/strong&gt; on the FLAC files themselves. Niente &lt;em class=&quot;u&quot;&gt;never&lt;/em&gt; deletes or modifies in any way FLACs it knows about).
&lt;/p&gt;

&lt;p&gt;
Be warned that wiping a database takes place immediately and without warning (largely because a database can be re-populated by simply taking Option 2 again, so it&amp;#039;s in a sense a non-destructive action). Though not harmful to any FLACs, an unintended wiping will mean having to re-scan and re-check large amounts of data, which can be a bit of a pain. So, be reluctant to use this option -and make sure you know what your currently-selected working database is before you take it, lest you inadvertently wipe the wrong one!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;7.0 Wiping a Database&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wiping_a_database&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;20985-21884&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;conclusion&quot;&gt;8.0 Conclusion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Niente databases are easily created, and relatively easily populated. Having created a database, it&amp;#039;s sensible to set it as the &lt;em&gt;default&lt;/em&gt; database.
&lt;/p&gt;

&lt;p&gt;
Database creation is a distinctly different operation, however, from database &lt;em&gt;population&lt;/em&gt;. For that you do a file system scan, either starting from scratch or merely adding to what&amp;#039;s already in the database. File system scans need to be told where to start scanning -and that folder needs to be at the &amp;#039;top&amp;#039; of a folder structure containing all the FLACs that are to be recorded in the database.
&lt;/p&gt;

&lt;p&gt;
Whatever &amp;#039;top&amp;#039; folder you choose to scan can be set as the &lt;em&gt;default&lt;/em&gt; music folder, meaning that Niente will assume it should use that as its working music folder any time Niente&amp;#039;s launched in the future.
&lt;/p&gt;

&lt;p&gt;
Defaults can be over-ridden: tap C to change the working database; tap F to change the working music folder.
&lt;/p&gt;

&lt;p&gt;
Populating a database is, in any event, a relatively swift operation since the data collected is very minimal: merely a record of the full path and filename of every FLAC discovered during the file system scan: it is only an &lt;em&gt;integrity check&lt;/em&gt; that &lt;strong&gt;analyses&lt;/strong&gt; the &amp;#039;innards&amp;#039; of your FLACs, which is a very time-consuming process.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nendbcreate&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nendbcreate&quot; data-wiki-id=&quot;softwares:niente:nendbcreate&quot;&gt;Database Menu&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenintegrity&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenintegrity&quot; data-wiki-id=&quot;softwares:niente:nenintegrity&quot;&gt;Intergrity Checks Menu&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;Reporting Menu&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;8.0 Conclusion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conclusion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;21885-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/e/ed4f6810e9104b28b69c914b45074146.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/neninstall">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T11:06:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>neninstall</title>
        <link>https://www.bbritten.com/softwares/niente/neninstall</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;installing_niente&quot;&gt;Installing Niente&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installing Niente&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installing_niente&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-32&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;operating_system_support&quot;&gt;1.0 Operating System Support&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
There are four levels of support for installing Niente onto assorted Linux distros and other operating systems, as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 1: Used by me daily, on real hardware, extensively tested, guaranteed to work well&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 2: Used by me infrequently, mostly in virtual machines, lightly tested, tested extensively in the past, things will almost certainly work&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 3: Hardly ever used by me and then only in virtual machines. No testing done, unless specific issues are reported, but has worked in the past just fine, so things ought still to work, too&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 4: Thought to work, and tested to work in the past, but you&amp;#039;re really on your own.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Putting specific, named distros into each tier goes as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 1: AlmaLinux 9 and 10, Fedora, Linux Mint, Apple macOS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 2: Debian, EndeavourOS, Ubuntu, Raspberry Pi &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 3: OpenSuse Leap &amp;amp; Tumbleweed, GeckoLinux, Arch, Manjaro, Garuda Linux, Devuan, Linux Mint Debian Edition, Peppermint &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;, MX Linux, AntiX Linux, Pop! &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;, Linux Lite, Zorin &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;, Elementary &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;, KDE Neon, Tuxedo &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;, Nobara, Ultramarine&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tier 4: Windows&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Every listed distro did run Niente perfectly at some time in the past and, if the distro developers haven&amp;#039;t messed around with core libraries too much, they should still work. However, only those distros in Tier 1 will receive extensive real-world testing from Version 4.04 and up. Other distros will receive either light-touch testing to make sure most things seem to work fine (Tier 2), or will only be tested on-demand by users reporting specific problems (Tier 3). I&amp;#039;ve provided some distro-specific notes and gotchas elsewhere.
&lt;/p&gt;

&lt;p&gt;
Raspberry Pi &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; is in Tier 2 simply because of performance issues: Niente&amp;#039;s integrity checks are quite CPU intensive and neither the Pi 3 or 4 have the required &amp;#039;oomph&amp;#039; to do integrity checks on a large music collection this side of eternity. I do run a Pi 4 as my main music &lt;em&gt;playing&lt;/em&gt; machine and Niente has been installed on it and works reliably… so it &lt;em&gt;ought&lt;/em&gt; to qualify as a Tier 1 platform. I simply can&amp;#039;t recommend it to anyone that wants it to run at adequate speed, however, which is why it&amp;#039;s down at Tier 2. If I ever spring for a Pi 5, its support status may yet be subject to promotion, but I wouldn&amp;#039;t hold my breath!
&lt;/p&gt;

&lt;p&gt;
Be aware that if you install Niente on Alma Linux 9, then &lt;a href=&quot;https://almalinux.org/blog/2025-07-07-elevate-to-el-10/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://almalinux.org/blog/2025-07-07-elevate-to-el-10/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;upgrade your OS&lt;/a&gt; to Alma Linux 10, ffmpeg may suddenly cease to be an installed program! (Guess how I know…). Any full or differential integrity check you then perform will be unable to compute a fresh MD5 hash on your FLACs&amp;#039; audio streams: every FLAC will thus be declared &amp;#039;potentially physically corrupt&amp;#039;. To re-install ffmpeg, you will need to add the RPM Fusion Free release repository. See &lt;a href=&quot;https://rpmfusion.org/Configuration&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://rpmfusion.org/Configuration&quot; rel=&quot;ugc nofollow noopener&quot;&gt;this page&lt;/a&gt; for details on how to do that. Once it&amp;#039;s been configured, a &lt;strong&gt;sudo dnf install ffmpeg&lt;/strong&gt; will work, and new Niente integrity checks will work as intended. Alternatively, just do a fresh install of Niente: the Niente installer automatically knows how to install &lt;em&gt;all&lt;/em&gt; the repositories and software it needs.
&lt;/p&gt;

&lt;p&gt;
Apple became a Tier 1 operating system when I decided at the end of January 2026 to invest in a brand new Apple Silicon iMac. It&amp;#039;s now my principle desktop operating system and, as my daily driver, is going to be the platform on which I test things out most thoroughly. I also have access to a couple of old Apple iMacs (from 2015 and 2012) that use Intel CPUs and can only run modern versions of the operating system thanks to Open Core Legacy Patcher: their &amp;#039;officially supported&amp;#039; operating systems end with Catalina and Monterey respectively. Accordingly, Niente will be a Tier 1 supported application on only Catalina, Monterey and whatever &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; version runs on a 2024 M4 iMac (Tahoe, at the moment). All other &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; versions will be Tier 4 support: definitely do-able and definitely done and documented: but you&amp;#039;re essentially on your own.
&lt;/p&gt;

&lt;p&gt;
Windows is a bit of a special case, because it probably runs Niente just fine… but I have no means of knowing that for sure. Windows 10 reached end of Microsoft&amp;#039;s official support back in October 2025, so all the hardware I have running Niente on Windows 10 is now no longer representative of anything supported by the operating system&amp;#039;s own manufacturer. Windows 11 is, of course, fully supported by Microsoft -but I literally have no hardware that is officially supported for running it. I can hack Windows 11 onto a bunch of spare hardware, but it will be an unsupported and unrepresentative platform. The principle, however, is that if you get Windows running the Windows Subsystem for Linux (WSL2) then you can install one of the supported distros on that (for example, Ubuntu or Fedora) and Niente will run perfectly well in that environment. So, it&amp;#039;s not that Niente won&amp;#039;t run on Windows: it&amp;#039;s just that I now expend zero development effort proving it does so. Any issues arising as you try to run it are therefore really yours to resolve. I will certainly offer advice and help if asked, but it will be merely on a &amp;#039;best efforts&amp;#039; basis. In the meantime, I have written installation instructions for Windows 11 here.
&lt;/p&gt;

&lt;p&gt;
Niente does not work on the Solus Linux distro.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Operating System Support&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;operating_system_support&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;33-5336&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;installation&quot;&gt;2.0 Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The basic installation procedure for any supported operating system is, in a new terminal session:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget software.bbritten.com/neninst&lt;/pre&gt;

&lt;p&gt;
The installer is small (around 20KB) , so it will take hardly any time to download it. Once  the installer has been downloaded, you launch it in the same folder you saved it to, with the command:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;bash neninst&lt;/pre&gt;

&lt;p&gt;
You will first see a screen warning you that the installer will make quite a few changes to your system, if you let it:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20251021_142127.jpg&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20251021_142127.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20251021_142127.jpg?w=650&amp;amp;tok=d65362&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You need to type &amp;#039;y&amp;#039; (and then press [Enter]) to proceed. If you type anything else, the installer will terminate without having touched your system at all.
&lt;/p&gt;

&lt;p&gt;
At the end of the installation, when you first run Niente, you may find the program display garbled (it is equally possible you won&amp;#039;t!). If you do, just visit the &lt;strong&gt;Administration&lt;/strong&gt; menu, take &lt;strong&gt;Option 1&lt;/strong&gt; to “edit the configuration file” and then press [Enter] through the various options (without changing any of them, really) until you return to the main program display: you should find all visual glitches gone (though you may need to go back into the configuration options to adjust the size of the program logo: it defaults to being 220×220 pixels in size and that might be too large on standard 1080p resolution displays).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5337-6699&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;software_packages_needed_for_niente_to_work&quot;&gt;2.1 Software packages needed for Niente to work&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
To start with, the Niente installer will check for the presence of various packages on your system and will seek to install any that it finds to be missing. You can usually just let it do it&amp;#039;s thing at this point, but if you are interested, here are the packages/programs that Niente deems essential to install:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bc (program allowing Bash to perform non-integer arithmetic)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; flac (the library that allows FLAC audio files to be read and understood)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ffmpeg (an audio and video stream interpreter)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; xterm (a terminal emulator or console)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; sqlite3 (a simple database)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; coreutils (a set of essential libraries, providing functionality like MD5 hash computation)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; imagemagick (an image processing program: works with both ImageMagick versions 6.x and 7.x)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; fd or fd-find, depending on distro (a file searching program)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dialog (a program allowing the creation and display of user input forms for the terminal)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; cuetools (a program allowing the handling of cue sheets for merged FLACs)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; curl (a program to perform file downloads)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
If having any of this software installed on your system gives you cause for concern, type &amp;#039;n&amp;#039; when the installer prompts you and give up on the idea of installing Niente altogether: the program cannot run without all of them being present, I&amp;#039;m afraid.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.1 Software packages needed for Niente to work&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;software_packages_needed_for_niente_to_work&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6700-8070&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;getting_started_post-install&quot;&gt;3.0 Getting Started, post-Install&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Once Niente is installed, you can launch it by (a) clicking on the launcher provided on the Desktop (some distros require you to &amp;#039;trust&amp;#039; or &amp;#039;mark as executable&amp;#039; the launcher before it will work); or (b) clicking the option provided somewhere in the main menu, which is usually to be found under &amp;#039;Multimedia&amp;#039; or (depending on distro) &amp;#039;Sounds &amp;amp; Video&amp;#039;. The main program display should then appear:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20251021_164825.jpg&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20251021_164825.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20251021_164825.jpg?w=650&amp;amp;tok=07e3fb&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Operation of the program beyond this point is hopefully self-explanatory, with the &amp;#039;top menu&amp;#039; giving access to each of the three main functional components of Niente in turn, plus the various administrative, housekeeping functions:: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Database: The initial creation and population of a database listing every FLAC file in your music collection&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Integrity Checks: Scan the FLAC files listed in the database and extract metadata and physical characteristics from them&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Reporting: Query the database and generate lists of files which fail particular physical or logical consistency tests&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Administration: Various configuration or program management options&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
In all cases, top-bar menu options can be accessed by right- or left-arrow keys (the menu wraps, so a right-arrow from &lt;strong&gt;Quit&lt;/strong&gt; takes you back to &lt;strong&gt;Database&lt;/strong&gt;, for example), or by tapping the first letter of the menu name (so tapping &amp;#039;D&amp;#039; gets you directly to Database, &amp;#039;R&amp;#039; to Reporting and so on). Once a top-bar menu option has been selected, the numbered menu items within that option will be displayed and can be invoked simply by tapping the number associated with the item. Thus tapping &amp;#039;D&amp;#039;, then &amp;#039;4&amp;#039;, will invoke the database wiping option; &amp;#039;I&amp;#039; then &amp;#039;3&amp;#039; will trigger a fast integrity check, and so on.
&lt;/p&gt;

&lt;p&gt;
A handful of options are accessible regardless of which top-bar menu is selected: they are accessible at any time by tapping the letter associated with them (these options are listed on the right-hand side of the main program display area). Thus tapping &amp;#039;X&amp;#039; will exit the program, whilst tapping&amp;#039;L&amp;#039; will remove the prgram lock (which prevents two file scanning operations from taking place at the same time).
&lt;/p&gt;

&lt;p&gt;
Beyond that quick-start approach, however, you should read the relevant pages elsewhere in the user manual for an exploration (and explanation!) of the rest of the program&amp;#039;s functionality,
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 Getting Started, post-Install&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;getting_started_post-install&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8071-10457&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;conclusion&quot;&gt;4.0 Conclusion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Summarising things as compactly as I can, then:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; fully update your distro, so that it&amp;#039;s using the latest packages and patches&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wget software.bbritten.com/neninst&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bash neninst&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; type niente at a command prompt to launch the program, or click on one of the graphical launchers provided&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I hope all your Niente Version 4 installations work successfully and that you get up-and-running with the new program quickly and painlessly!
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenquick&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenquick&quot; data-wiki-id=&quot;softwares:niente:nenquick&quot;&gt;Quick Start Guide&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.0 Conclusion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conclusion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;10458-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/e/eff278e5fbf39483d401d2db65d3bdbf.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/nenintegrity">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-18T10:23:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nenintegrity</title>
        <link>https://www.bbritten.com/softwares/niente/nenintegrity</link>
        <description>
&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/beethoven-inspecting7.png?w=220&amp;amp;tok=f1cb0b&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;integrity_checks&quot;&gt;Integrity Checks&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Integrity Checks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;integrity_checks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;61-91&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
When you populate a Niente database, you fill it with data about which FLACs exist -and nothing much else. Here is a screenshot of the Niente database in a third-party tool that understands how to read and display databases &lt;em&gt;after&lt;/em&gt; scanning for FLACs (Database menu, Option 2) but &lt;em&gt;before&lt;/em&gt; performing any integrity checks:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_151845.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240710_151845.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240710_151845.png?w=650&amp;amp;tok=de0838&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll note that each row lists FLAC files found: that&amp;#039;s the data which a Database menu Option 2 scan generates. You&amp;#039;ll also note, however, that each row in this TRACKS table is supposed to have 14 &lt;em&gt;columns&lt;/em&gt; of data (one of them fell off the right-hand edge of that screenshot!) -from MD5 hash values, to extracted PERFORMER, COMMENT and ALBUM tag data (to mention just a few). Immediately after a file scan all these columns are NULL for all rows: Niente knows &lt;em&gt;nothing at all&lt;/em&gt; about the FLAC files, except for the fact that they exist.
&lt;/p&gt;

&lt;p&gt;
A Niente &lt;strong&gt;integrity check&lt;/strong&gt; is the process by which these columns are filled in with data, by visiting each listed FLAC in turn and reading all the metadata tags and copying the data found there into the relevant columns. Without an integrity check, therefore, Niente can report nothing meaningful about your music collection, other than the mere number of FLAC files that exist.
&lt;/p&gt;

&lt;p&gt;
Generally speaking, populating these missing columns of data doesn&amp;#039;t take a huge amount of time: one only needs to visit a FLAC file once to read all its tags in one fell swoop, so it&amp;#039;s not particularly demanding on your CPU or hard disk. Tag data is, in other words, &lt;em&gt;logical&lt;/em&gt; data about the FLAC; and logical data is easily and swiftly read by merely opening the file in question.
&lt;/p&gt;

&lt;p&gt;
However, one particular set of columns requires quite a bit more work to populate: the HASH_ORIG and HASH_NEW columns are the columns in which the MD5 &amp;#039;digital fingerprint&amp;#039; of the audio signal within a FLAC are recorded. The HASH_ORIG is easy to fill, in that every FLAC is &amp;#039;born&amp;#039; with an in-built MD5 hash value the moment it is created …and so all we have to do is read it, like any other logical tag. The HASH_NEW column, however, is where Niente stores the results of re-&lt;em&gt;computing&lt;/em&gt; the MD5 fingerprint from scratch -and re-computation involves reading the entire audio stream (so, for a Wagner opera that&amp;#039;s going to be a lot of music to read!) and performing a fairly CPU-intensive computation on the data thereby retrieved. Filling the HASH_NEW column is therefore a major slog… and is involved in determining the &lt;em&gt;physical&lt;/em&gt; characteristics or state of a FLAC.
&lt;/p&gt;

&lt;p&gt;
In short, Niente integrity checks can be &lt;strong&gt;logical&lt;/strong&gt; or &lt;strong&gt;physical&lt;/strong&gt;, or both (though Niente doesn&amp;#039;t have an option to perform &lt;em&gt;only&lt;/em&gt; physical checks). Logical ones tend to be relatively fast, and populate around 13 of the columns in the TRACKS table. Physical ones tend to be quite slow and computationally expensive and end up populating the HASH_NEW column in the TRACKS table.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Option 1 : Perform a full integrity check&lt;/strong&gt; is the option used to perform logical+physical integrity checks, for all records in the TRACKS table, &lt;em&gt;ab initio&lt;/em&gt;. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Option 2 : Perform a differential integrity check&lt;/strong&gt; also performs logical+physical integrity checks, but it only does so for those records which are already known to have failed the various logical and physical integrity tests that Niente performs. If you add 3 new recordings to the database, for example, they will start off without any of the 14 columns of associated data and Niente will regard that as meaning that they fail its logical and physical tests: only those 3 new recordings would therefore have their logical and physical characteristics read, computed and loaded into the database using this option: the other 15,000 rows in the database that are known to have passed the physical and logical integrity checks previously performed would be skipped this time round.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Option 3 : Perform a fast integrity check&lt;/strong&gt; only performs a &lt;strong&gt;logical&lt;/strong&gt; integrity check: it does not pay attention to hash value mismatches in determining what TRACKS rows to visit and if it visits a FLAC for any reason, it won&amp;#039;t re-compute the MD5 &amp;#039;fingerprint&amp;#039; for that file (which is why it&amp;#039;s quite a fast check to perform). Like the differential integrity check, however, the fast integrity check only visits those FLACs which are recorded in the database as having previously failed one or more of the logical tests that Niente applies. It will not, therefore, visit all the rows mentioned in the TRACKS table (unless all rows lack data for the metadata columns in the TRACKS table, of course). You&amp;#039;d use this option if you get a report saying &amp;#039;three of your FLACs have a recording year that doesn&amp;#039;t match what&amp;#039;s in their ALBUM tag&amp;#039;: that&amp;#039;s a logical tagging failure, so you&amp;#039;d fix up those tags and to get Niente to re-check just those three files for logical consistency, this is the menu option you&amp;#039;d take.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
By way of summary, then:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Full&lt;/strong&gt;: Logical and physical tests of all known FLACs; previous results are wiped&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Differential&lt;/strong&gt;: Logical and physical &lt;em&gt;re-&lt;/em&gt;tests of only those FLACs that have failed previous logical or physical tests&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Fast&lt;/strong&gt;: Logical-only &lt;em&gt;re-&lt;/em&gt;tests for FLACs that are known to have failed previous logical tests&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
When you have just created and populated a database with Niente, therefore, your first integrity check should be a &lt;strong&gt;full&lt;/strong&gt; one. If that produces details of any logical tagging errors that you need to fix (such as the recording year not appearing in the ALBUM tag, for example), then you re-tag the affected FLACs and get Niente to notice your corrections by running a new &lt;strong&gt;fast&lt;/strong&gt; integrity check: since the fixes were all in tag metadata, there&amp;#039;s no need to worry about re-computing the physical hash value for the audio signal in any of those FLACs. If Niente ever reports physical file corruption, however, then you&amp;#039;d re-rip that CD, or restore the files from a known good backup -and you get Niente to notice the fix by this time performing a new &lt;strong&gt;differential&lt;/strong&gt; integrity check, since that &lt;em&gt;will&lt;/em&gt; re-compute the MD5 hash values for the affected FLACs. Finally, if you are continuously adding to your music collection, you&amp;#039;d regularly run new &lt;strong&gt;differential&lt;/strong&gt; tests to get the new recordings noticed and tested for both logical and physical issues.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;92-6562&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;performing_an_integrity_check&quot;&gt;2.0 Performing an Integrity Check&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
All integrity checks use the contents of the TRACKS table in the database to determine what FLACs should be visited and inspected. That is, they don&amp;#039;t go off and do a re-visit of the file system to &lt;em&gt;search&lt;/em&gt; for FLACs: that&amp;#039;s what &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nendbcreate&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nendbcreate&quot; data-wiki-id=&quot;softwares:niente:nendbcreate&quot;&gt;loading the database&lt;/a&gt; is for.
&lt;/p&gt;

&lt;p&gt;
All integrity checks are performed in the same way: select the &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, then select options 1, 2 or 3 (as explained in Section 1.0 above, each type of check is used in different circumstances). Immediately one of these options is taken, Niente starts visiting the appropriate FLACs listed in its database and reads their contents from disk:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_095447.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240711_095447.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_095447.png?w=650&amp;amp;tok=9c662b&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The program display will show you which file is currently being read -and will list out some of the data that it has found within the file. Since this is a screenshot of a full integrity check, you&amp;#039;ll notice that it displays the &lt;strong&gt;MD5 Hash&lt;/strong&gt; which Niente has re-computed from the FLAC&amp;#039;s audio signal (remember, full and differential checks both concern themselves with a file&amp;#039;s &lt;em&gt;physical&lt;/em&gt; integrity and MD5 hash computations are precisely the mechanism they use to do that). If I&amp;#039;d selected to do a fast integrity check, the screen would have looked like this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_095601.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240711_095601.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_095601.png?w=650&amp;amp;tok=d17cab&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s the same sort of &lt;em&gt;logical&lt;/em&gt; data as shown before, but this time there&amp;#039;s no &amp;#039;MD5 Hash&amp;#039; item to display. Fast checks don&amp;#039;t read or re-compute MD5 hashes at all, because they deliberately don&amp;#039;t concern themselves with the physical integrity aspect of a FLAC.
&lt;/p&gt;

&lt;p&gt;
Note that you can &lt;strong&gt;interrupt&lt;/strong&gt; an integrity check at any time (by pressing Ctrl+C, which will trigger the exit from Niente completely), and a new integrity check will simply resume from where it left off (unless it&amp;#039;s a full integrity check: they &lt;em&gt;always&lt;/em&gt; start from row 1, from scratch). There is a slight catch to terminating-and-resuming an integrity check, however: Niente always creates a &amp;#039;scan lock&amp;#039; the moment it starts to perform an integrity check, to prevent second &lt;em&gt;simultaneous&lt;/em&gt; integrity checks from confusing it. Terminate Niente abruptly, therefore, and the program is killed off before it has a chance to remove that scan lock. This means that if you restart Niente and try to re-run an integrity check you&amp;#039;ll see this message:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_102351.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240711_102351.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_102351.png?w=650&amp;amp;tok=eba8a6&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The fix for this is to tap the L key: that will forcibly remove the program lock and allow a second integrity check to pick up from where the original one got to.
&lt;/p&gt;

&lt;p&gt;
Be warned: &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;if you remove a program lock when it&amp;#039;s not safe to do so, you can corrupt your database&lt;/em&gt;&lt;/strong&gt;. That&amp;#039;s not fatal, of course: you&amp;#039;d simply wipe it, re-load it and start a fresh integrity check. For a large music collection, however, that would be a lot of work to re-perform, so it&amp;#039;s not recommended! Remove the program lock if you &lt;strong&gt;have&lt;/strong&gt; to and if you can guarantee to yourself that no other integrity check is running; don&amp;#039;t do it casually or unnecessarily.
&lt;/p&gt;

&lt;p&gt;
At the end of an integrity check, if you were able to see inside the Niente database, you&amp;#039;d see this sort of thing in the TRACKS table:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_100940.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240711_100940.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_100940.png?w=650&amp;amp;tok=024898&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Compare that to the first screenshot shown in the introduction to this page and you&amp;#039;ll see that all the columns associated with each row of data now have meaningful data in their associated columns, not just the word &amp;#039;NULL&amp;#039;. This means we now have data about a FLAC that we can read, interpret… and point out when it appears logically inconsistent (which is what Niente&amp;#039;s various &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;reporting options&lt;/a&gt; will do for you).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Performing an Integrity Check&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;performing_an_integrity_check&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;6563-10321&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;album_art_and_volume_boost_checks&quot;&gt;3.0 Album Art and Volume Boost Checks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Integrity checks gather metadata tags from FLACs and (at least if it&amp;#039;s a full or differential check) re-computes the MD5 hash or &amp;#039;fingerprint&amp;#039; of a FLAC&amp;#039;s audio stream. This allows Niente to report on most sources of logical inconsistency or physical corruption. There are two special exceptions, however: checking if &lt;strong&gt;album art&lt;/strong&gt; embedded within a FLAC is of a suitable size and shape; and checking if the &lt;strong&gt;volume levels&lt;/strong&gt; of the FLACs within a folder are as loud as they could be. These album art and volume level checks are &lt;em&gt;not&lt;/em&gt; performed as part of a &amp;#039;standard&amp;#039; integrity check -simply because not everyone wants to volume-boost their FLACs or to embed album art within them, whereas everyone wants to know if their FLACs are physically corrupt!
&lt;/p&gt;

&lt;p&gt;
Accordingly, the &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Option 4 : Check album art for all files&lt;/strong&gt; and &lt;strong&gt;Option 5 : Check album art for new files&lt;/strong&gt; both perform album art checks, either against every single FLAC in your collection (option 4), or only for those files known to Niente but not previously checked for album art status (option 5).
&lt;/p&gt;

&lt;p&gt;
Similarly, &lt;strong&gt;Option 6 : Check all files for volume boosts&lt;/strong&gt; and &lt;strong&gt;Option 7 : Check new files for volume boosts&lt;/strong&gt; are provided to perform an analysis of the music stream of a FLAC file and determine its peak loudness. Option 6 performs that analysis afresh for every FLAC file known to Niente, whilst option 7 performs the same sort of analysis, but only for those FLAC files known to Niente but which have not previously been volume-level assessed at all.
&lt;/p&gt;

&lt;p&gt;
In both cases, the &amp;#039;all files&amp;#039; option literally wipes the existing album art or volume data from the Niente database and starts collecting it once more, from scratch, for every FLAC in your music collection: that makes these potentially lengthy options to run. When you&amp;#039;ve just added a couple of new CD rips to your collection and want their album art and volume levels collected, however, that &amp;#039;start over&amp;#039; approach would be a bit of overkill: the &amp;#039;new files&amp;#039; versions of each type of check thus helpfully only bothers to collect such data for files which are known about (thanks to them being added to Niente via the Database menu, Option 3) but which are known to &lt;em&gt;lack&lt;/em&gt; any prior volume or album art data.
&lt;/p&gt;

&lt;p&gt;
Both the Album Art and Volume Boost checks work the same way a &amp;#039;regular&amp;#039; integrity check does: you tap the relevant menu option and Niente immediately runs off to read the FLAC files in its TRACKS table and work out the appropriate data to store back in its database.
&lt;/p&gt;

&lt;p&gt;
An album art check-up displays minimal information as it works:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-17_at_21.31.25.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-17_at_21.31.25.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-17_at_21.31.25.png?w=600&amp;amp;tok=0e5bdc&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Such checks will be over fairly swiftly, even on huge music collections, as it&amp;#039;s trivially easy to check for a piece of artwork&amp;#039;s pixel dimensions (for this reason, you cannot interrupt an album art check. That is, of course you&amp;#039;re allowed to press Ctrl+C any time you like, but if you do that in the middle of an album art check, all work performed up to that point is lost entirely: a renewed art check therefore has to start over from scratch). The “ETA” field there is a &lt;em&gt;very&lt;/em&gt; rough guide to how long Niente thinks it will take to complete the album art scan: it will jump around a bit as the scan starts, before settling down to something which is vaguely reliable!
&lt;/p&gt;

&lt;p&gt;
The results of these album art scans are stored in their own table (called ALBUMART), as follows:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_104112.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240711_104112.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_104112.png?w=650&amp;amp;tok=fd1743&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
As you can see, only two bits of data are collected about any piece of embedded album art: it&amp;#039;s height and width, in pixels. Niente does not (cannot!) concern itself with whether your album art is in focus, too old, too new or of questionable artistic merit! This data is, however, sufficient to tell us (via the appropriate &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;reports&lt;/a&gt;, of course) that such-and-such a file has non-square album art (which is a problem for some people!) or that this-or-that FLAC has album art which is generally deemed too small or stupidly huge.
&lt;/p&gt;

&lt;p&gt;
The volume boost check display contains a little more information as it proceeds:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-18_at_10.16.19.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-18_at_10.16.19.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-18_at_10.16.19.png?w=600&amp;amp;tok=24540c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The filename of the FLAC being analysed is displayed, along with the loudest volume level detected in that file. If the detected peak volume level is below a configurable threshold (by default, it&amp;#039;s -2dB, but the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 1&lt;/strong&gt; lets you alter that), then the display increments the &amp;#039;Possible Volume Boosts found&amp;#039; counter. It bears repeating that Niente isn&amp;#039;t actually applying a volume boost: it&amp;#039;s not its job and Niente &lt;em&gt;never&lt;/em&gt; modifies the FLACs it knows about anyway. It simply collects the data that lets you determine whether to apply a volume boost or not. 
&lt;/p&gt;

&lt;p&gt;
Once again, the “ETA” displayed is an extremely rough approximation of how long it will take to complete the volume level scan: the scan might race through a bazillion FLACs of Scarlatti harpsichord pieces before bumping into an almighty wall of complete Wagner operas… Niente cannot know for sure how long things are going to take when it is, effectively, having to listen to every bar of music in a recording without knowing the length of recordings yet to come. Don&amp;#039;t be surprised if the ETA bounces around from time to time!
&lt;/p&gt;

&lt;p&gt;
The volume boost scan populates its own table in the database, called MAXVOLUMES. If you could see inside the Niente database, you&amp;#039;d see it looks like this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_104851.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240711_104851.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240711_104851.png?w=650&amp;amp;tok=bc6828&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll note that the table does &lt;strong&gt;not&lt;/strong&gt; list individual FLACs, but &lt;em&gt;folders&lt;/em&gt;. That&amp;#039;s because you cannot meaningfully volume boost individual FLACs regardless of the volumes of the other files in a folder: you&amp;#039;d end up making the quiet movement of a concerto or symphony as loud as the loud movement, which is not the effect you&amp;#039;re after! You&amp;#039;d never want to adjust the &lt;em&gt;relative&lt;/em&gt; loudness of movements like that. On the other hand, if the loudest movement was really quite quiet, then it would be fine to boost the volume of &lt;em&gt;all&lt;/em&gt; the tracks in the folder so that whilst their relative loudness remained the same, their &lt;em&gt;absolute&lt;/em&gt; volume increased.
&lt;/p&gt;

&lt;p&gt;
This is what Niente is calculating with its volume boost check: it&amp;#039;s finding the &lt;em&gt;loudest&lt;/em&gt; file in a folder of FLACs and working out what the maximum possible volume boost to &lt;em&gt;that&lt;/em&gt; FLAC could be without introducing distortion or clipping. If you can apply a boost of (say) +6dB to the &lt;em class=&quot;u&quot;&gt;loudest&lt;/em&gt; file, then you can also apply the same +6dB boost to the &lt;em class=&quot;u&quot;&gt;quiestest&lt;/em&gt; file: both files then have an absolute volume increase of +6dB, but their &lt;em&gt;relative&lt;/em&gt; loudness, one to another, remains a constant.
&lt;/p&gt;

&lt;p&gt;
Performing a volume boost check is CPU intensive and can take a long time, since the audio stream data in every FLAC has to be read to determine its peak loudness. Imagine having to wade through Wagner&amp;#039;s entire &lt;em&gt;Ring Cycle&lt;/em&gt; to work out what the loudest bits sound like! It&amp;#039;s going to take a while …and therefore volume boost checks &lt;em&gt;can&lt;/em&gt; be interrupted (with a Ctrl+C). You&amp;#039;d resume from where you left off by taking the &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Option 6&lt;/strong&gt;, which picks up from where things had got to, without re-calculating everything from scratch (which is what Option 5 does). You&amp;#039;d have to remove the program lock (press &amp;#039;L&amp;#039;) to resume an interrupted boost scan, of course.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 Album Art and Volume Boost Checks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;album_art_and_volume_boost_checks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;10322-17804&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;scheduling_unattended_integrity_checks&quot;&gt;4.0 Scheduling Unattended Integrity Checks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some integrity checks take a long time to complete (especially full integrity checks and volume boost checks). You generally don&amp;#039;t want to be hanging around watching your screen for multiple hours as they plough through their work! Accordingly, Niente lets you schedule &lt;em&gt;unattended&lt;/em&gt; integrity checks by launching it with various &lt;strong&gt;run-time parameters&lt;/strong&gt;. This means that instead of launching Niente with the bare command &lt;strong&gt;niente&lt;/strong&gt;, you add &amp;#039;switches&amp;#039; to the command to make Niente do something immediately without further user intervention.
&lt;/p&gt;

&lt;p&gt;
For example, if I launch Niente by opening a terminal and typing the command &lt;strong&gt;niente –check-full&lt;/strong&gt;, Niente will immediately start to perform a new full integrity check. Or I could type the command &lt;strong&gt;niente –check-volume&lt;/strong&gt; and a new complete volume boost check will begin. When Niente is launched with one of these run-time parameters, it provides absolutely &lt;em class=&quot;u&quot;&gt;no feedback&lt;/em&gt; at all to the user: nothing appears on the screen, which will simply go black and sit there as if nothing is happening at all (even though the program is running like crazy in the background!) The program provides no feedback in these situations, of course, because you&amp;#039;re not meant to be sitting there watching it: they&amp;#039;re for &lt;em&gt;unattended&lt;/em&gt; operation of the program!
&lt;/p&gt;

&lt;p&gt;
The complete list of run-time parameters that you can launch Niente with is as follows:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; Parameter &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Purpose/Function &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; Menu Equivalent &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--scan-full&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Wipes the existing tracks from a database and then re-scans default music folder to re-populate it from scratch&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Database → 2&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--scan-new&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Scans the default music folder for new or modified recordings and adds them to the existing database&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Database → 3&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-full&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a full integrity check (i.e., physical and logical checks for all recordings in the database)&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 1&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-differential&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a differential integrity check (i.e., physical &amp;amp; logical checks for recordings with previously-detected physical or logical corruption issues)&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 2&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-fast&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a fast integrity check (i.e., logical check only of recordings already known to the database)&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 3&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-art&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a new album art check for all recordings known to the database&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 4&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-volume&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a complete check of possible volume boosts for all recordings in the database&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 6&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--aggstats&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Generates a quick aggregate statistics report and writes it to &lt;strong&gt;/tmp/nientestats.csv&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Reporting → General → 1&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;19240-20532&amp;quot;} --&gt;
&lt;p&gt;
The real idea of these parameters is, of course, that you&amp;#039;ll use your operating system&amp;#039;s scheduler to make these activities happen during the dead of night. In most cases, this means adding a suitable entry to your system&amp;#039;s &lt;strong&gt;crontab&lt;/strong&gt;. Here&amp;#039;s the crontab I use:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;59 23 * * * /usr/bin/niente.sh --scan-new
00 1 * * SUN /usr/bin/niente.sh --check-full
00 1 * * MON-SAT /usr/bin/niente.sh --check-differential
00 3 2 * * /usr/bin/niente.sh --check-art
00 3 3 * * /usr/bin/niente.sh --check-volume&lt;/pre&gt;

&lt;p&gt;
…which means, as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run a scan for FLACs which aren&amp;#039;t already in the database and add them, at 11:59PM every night&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run a full integrity check at 1AM every Sunday&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run a differential integrity check at 1AM every night that isn&amp;#039;t a Sunday&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On the 2nd day of every month, at 3AM, run a fresh, all-files album art check&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On the 3rd day of every month, at 3AM, run a fresh, all-files volume check&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
There is no run-time parameter, you&amp;#039;ll note, to trigger a fresh album art or volume check only for those files that don&amp;#039;t have the relevant information collected already: it&amp;#039;s the full &amp;#039;all files&amp;#039; version of those checks or nothing. 
&lt;/p&gt;

&lt;p&gt;
There&amp;#039;s also a potential issue if the 2nd or 3rd day of the month happens to be a Sunday: my full integrity check is running on Sunday and by 3AM it&amp;#039;s only been running for a couple of hours, which means it won&amp;#039;t have finished. The art and volume checks that are meant to run that morning at 2AM are thus likely to spot the existence of a program lock and therefore not be able to run themselves. I consider this a rare enough occurrence not to care about a missed art or volume check, though, so I live with it. If that ever changes, I&amp;#039;ll have to launch those checks later on in the day, maybe in the afternoon
&lt;/p&gt;

&lt;p&gt;
Anyway: you get the idea. You can use the run-time parameters to schedule integrity checks to be performed in the dead of night, when you&amp;#039;re not having to sit around and press menu options to make them happen!
&lt;/p&gt;

&lt;p&gt;
Just be aware that there&amp;#039;s no runtime parameter to specify the database to use or the music folder to scan for recordings: those have to come from a configured &lt;strong&gt;default&lt;/strong&gt; database and music folder (so visit the Administration menu, Option 1 to set them).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.0 Scheduling Unattended Integrity Checks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;scheduling_unattended_integrity_checks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;17805-22778&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;conclusion&quot;&gt;5.0 Conclusion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Integrity checks of all kinds end with a whimper, not a bang! That is, no alarm bells go off, nor flashing lights annoy, whenever an integrity check reveals data corruption, logical inconsistencies or poorly-sized album art. The job of an integrity check is simply to collect the data that indicates those things exist: it&amp;#039;s up to you to run the various reports that will tell you, precisely, &lt;em&gt;which&lt;/em&gt; files are affected by such things.
&lt;/p&gt;

&lt;p&gt;
Having run an integrity check, therefore, it&amp;#039;s important to run one or more &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;reports&lt;/a&gt; to find out what the integrity check discovered as it worked.
&lt;/p&gt;

&lt;p&gt;
Remember that most integrity checks can be interrupted by pressing Ctrl+C, but that doing so leaves behind a program lock that will prevent any future integrity check from starting. Tapping the &amp;#039;L&amp;#039; key removes that lock, permitting new checks to start: but if you remove the lock when you shouldn&amp;#039;t do, your new check will completely screw up the work being performed by the already-running check.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nendbcreate&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nendbcreate&quot; data-wiki-id=&quot;softwares:niente:nendbcreate&quot;&gt;Database Menu&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenintegrity&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenintegrity&quot; data-wiki-id=&quot;softwares:niente:nenintegrity&quot;&gt;Intergrity Checks Menu&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;Reporting Menu&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5.0 Conclusion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conclusion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;22779-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/7/7e3375822eb0428c86e8c6705d5a8069.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/nenquick">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-05T20:50:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nenquick</title>
        <link>https://www.bbritten.com/softwares/niente/nenquick</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;a_quick_start_guide&quot;&gt;A Quick Start Guide&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;A Quick Start Guide&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;a_quick_start_guide&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-34&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
By way of a whirlwind tour of how you go about installing then using Niente Version 4, the following article documents a typical &amp;#039;workflow&amp;#039;. It assumes only that you&amp;#039;ve taken care of letting your PC &amp;#039;see&amp;#039; your music collection already. If it&amp;#039;s stored locally, that&amp;#039;s fine. If it&amp;#039;s stored on a remote server, it needs to be made accessible to the PC running Niente somehow, whether that&amp;#039;s via a mounted NFS or Samba share. On my own Niente server, for example, I have this line in its &lt;strong&gt;/etc/fstab&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;192.168.1.64:/mnt/bulkdata/music     /sourcedata/music       nfs  defaults,nofail,_netdev,hard,rsize=1048576,wsize=1048567,timeo=600,retrans=2        0     0&lt;/pre&gt;

&lt;p&gt;
…meaning that the &amp;#039;source of music&amp;#039; is a remote server with an IP address of 192.168.1.64. It stores its music files in a folder called &lt;strong&gt;/mnt/bulkdata/music&lt;/strong&gt; and I&amp;#039;m mapping a folder on my Niente PC, called &lt;strong&gt;/sourcedata/music&lt;/strong&gt; to that remote server store, using NFS, and with a bunch of option switches to make the &amp;#039;mapped network drive&amp;#039; read-write, a network timeout of 60 seconds, performing reads and writes over the network in 1MB chunks, and so on. My Niente PC is thus given full access to my complete classical music collection, and by pointing Niente at &lt;strong&gt;/sourcedata/music&lt;/strong&gt;, it&amp;#039;s able to see all of it at once.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;35-1363&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;installation&quot;&gt;2.0 Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Installing Niente involves opening a terminal and typing the following commands:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; cd&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wget software.bbritten.com/neninst&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bash neninst&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The installation scripts requires an initial confirmation that you want to proceed:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_123841.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_123841.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_123841.png?w=650&amp;amp;tok=afeb72&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The installer is going to create a set of new folders within your $HOME folder (for example, &lt;strong&gt;$HOME/.local/share/niente4/bin&lt;/strong&gt;, &lt;strong&gt;$HOME/.local/share/niente4/txt&lt;/strong&gt; and some others), and it will also potentially install a bunch of dependent software packages if it finds them missing from your system, so this screen is warning you about that and asking for your permission to proceed. Type &amp;#039;y&amp;#039; to go ahead. You&amp;#039;ll have to supply the sudo password at this point, because the installer also needs to create some files in /usr/bin, which requires root privileges. That done (which might take a few minutes to complete), the installer then pulls down the Niente program itself and verifies it for accuracy once it&amp;#039;s done so. That usually only takes a few seconds to complete, and then it&amp;#039;s all over!
&lt;/p&gt;

&lt;p&gt;
What you&amp;#039;ll usually find at the end of the installation process (though it depends on what sort of desktop environment you&amp;#039;re running) is that a desktop icon now exists that can be used to launch Niente (though you may need to right-click it and select a context menu choice to &amp;#039;trust&amp;#039; or execute the shortcut before it will actually run, since the Desktop is considered an insecure location for launching executables on many distros). You should also find a program launcher in the normal start menu: this will usually be under the &amp;#039;Multimedia&amp;#039; menu or, on some distros, the &amp;#039;Sound &amp;amp; Video&amp;#039; menu. Here&amp;#039;s my Debian start menu, for example:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_124559.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_124559.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_124559.png?w=650&amp;amp;tok=d97ecd&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
If there&amp;#039;s a launcher in your start menu, you can just click it to start the program without having to confirm or approve it first: the start menu is usually considered a &lt;em&gt;trusted&lt;/em&gt; location for executables.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1364-3407&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;first_run&quot;&gt;3.0 First Run&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The first time you launch the Niente program, you&amp;#039;ll be met with this message:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_145549.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_145549.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_145549.png?w=650&amp;amp;tok=420b82&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Niente is a database-driven program. On first launch, of course, you won&amp;#039;t have a database, so this message appears, warning that you&amp;#039;ll need to &lt;em&gt;create&lt;/em&gt; a database before Niente can be used to do anything productive. Click [OK] to proceed at this point and you&amp;#039;ll be taken to Niente&amp;#039;s main program area:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240910_105521.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240910_105521.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240910_105521.png?w=650&amp;amp;tok=f1c9f5&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll see that the program has four main menu &amp;#039;areas&amp;#039;: &lt;strong&gt;Database&lt;/strong&gt;, &lt;strong&gt;Integrity Checks&lt;/strong&gt;, &lt;strong&gt;Reporting&lt;/strong&gt; and &lt;strong&gt;Administration&lt;/strong&gt;. You use the right- and left-arrow cursor keys to scroll around that top menu bar in either direction. You can also tap the initial letters of each menu item to jump directly to it: R (or lower-case r) will take you to &amp;#039;Reporting&amp;#039; and &amp;#039;D&amp;#039; (or &amp;#039;d&amp;#039;) will take you back to &amp;#039;Database&amp;#039;, for example.
&lt;/p&gt;

&lt;p&gt;
Whenever you launch Niente Version 4, you always start off at the &amp;#039;Database&amp;#039; menu item.
&lt;/p&gt;

&lt;p&gt;
Bearing in mind the warning you received when launching the program, your next step should be obvious: tap &amp;#039;1&amp;#039; when sitting in the Database menu to &amp;#039;create a music database&amp;#039;. Without doing that, Niente can be used for &lt;em&gt;nothing!&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 First Run&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;first_run&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3408-4703&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;create_a_database&quot;&gt;3.1 Create a Database&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Taking the &amp;#039;Create a music database&amp;#039; option brings up this screen:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_130441.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_130441.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_130441.png?w=650&amp;amp;tok=8d4908&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You are asked to supply a database &lt;em&gt;name&lt;/em&gt;. The name can be anything you like -but I&amp;#039;d recommend keeping it relatively short (say, under 15 characters) and without spaces, though those are not hard-and-fast requirements. Here, you see me suggesting &amp;#039;main_classical&amp;#039; as a name and using an underscore to replace the space that would naturally be there. Press [OK] (or click on it with your mouse: either keyboard or mouse work just fine on these sorts of screens) to proceed.
&lt;/p&gt;

&lt;p&gt;
The screen will change to this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_130631.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_130631.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_130631.png?w=650&amp;amp;tok=c3a048&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The database &lt;em&gt;creation&lt;/em&gt; process takes hardly any time at all, so you&amp;#039;ll see this confirmation message appear almost immediately you click [OK]. As the message tries to point out, however, the reason everything just worked so quickly is that all you&amp;#039;ve done is create the necessary database &lt;em&gt;structures&lt;/em&gt; -the tables, the indexes and views and so on. As far as actual &lt;em&gt;data&lt;/em&gt; goes, however, the database is completely devoid of it. It knows nothing about your music collection (yet), so as soon as the database is created structurally, your next job is to perform a scan of your music files to populate it with meaningful data. We&amp;#039;ll come on to doing that in just a second: for now, click [OK] (or press [Enter]) to dismiss the confirmation message.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.1 Create a Database&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_a_database&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4704-6203&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;populate_a_database&quot;&gt;3.2 Populate a Database&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Your immediate next task is therefore to scan for music and have the details regarding that music added to your new database. This is also a relatively quick thing to do, because Niente only populates the database with details of what FLAC files exist, which does involve some reading from disk, but not a lot of it: there is no attempt at this stage to learn anything meaningful &lt;em&gt;about&lt;/em&gt; those files, other than their mere existence. It&amp;#039;s not going to read tags, or check album art, or work out whether they are corrupt or not, for example. Not yet, anyway!
&lt;/p&gt;

&lt;p&gt;
So, take Option 2 to &amp;#039;Load a database with fresh scan&amp;#039; and you&amp;#039;ll see this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131130.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_131130.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131130.png?w=650&amp;amp;tok=2e5a3e&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This folder selection dialogue always starts off pointing at your $HOME folder (in my case, /home/hjr). You can use the top pane to navigate around your file system (the &amp;#039;..&amp;#039; double dot entry allows you to go &amp;#039;up&amp;#039; a folder level, so highlighting it and pressing the space bar would take me to /home). You can also tab down to the second pane (the one displaying &amp;#039;/home/hjr&amp;#039;) in that screenshot and simply start typing the correct path: the top pane will change its contents to match whatever you&amp;#039;ve typed. Here, for example, I&amp;#039;ve manually typed &amp;#039;/sourcedata/music and the top pane has changed itself so that the /music subfolder is highlighted:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131400.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_131400.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131400.png?w=650&amp;amp;tok=78c647&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Use whatever file/folder navigation technique you prefer to move to the correct location, therefore. Just be warned of a little quirk with this sort of form: though the second pane lists &amp;#039;/sourcedata/music&amp;#039;, I haven&amp;#039;t actually &amp;#039;gone into&amp;#039; the music sub-folder. The top pane tells me I&amp;#039;m &lt;em&gt;looking at&lt;/em&gt; it, but I haven&amp;#039;t actually descended &lt;strong&gt;into&lt;/strong&gt; it. If I were to press OK at this point, then I&amp;#039;d actually have selected the /sourcedata folder as my music folder. So, make sure you press the spacebar to go into the folder you want. In my case, I actually want /sourcedata/music/classical, so my form needs to show this sort of thing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131737.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_131737.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131737.png?w=650&amp;amp;tok=fc2cea&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, I&amp;#039;m actually &amp;#039;in&amp;#039; /sourcedata/music/classical and looking at the various sub-sub-folders that are within that sub-folder, which is correct for me. I can now click [OK] (or press [Enter]).
&lt;/p&gt;

&lt;p&gt;
This triggers Niente&amp;#039;s scan of that folder for music files (FLACs):
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131855.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_131855.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131855.png?w=650&amp;amp;tok=2309d7&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You can see the path that Niente is searching toward the top of the screen. The scan shouldn&amp;#039;t take long to complete, even for a very large music collection. My 15,701 FLACs were all scanned in about 30 seconds:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131922.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_131922.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_131922.png?w=650&amp;amp;tok=92bd0d&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
When the scan is complete, you&amp;#039;ll be told how many FLACs were found. Click [OK] to return to the main menu.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.2 Populate a Database&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;populate_a_database&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6204-9083&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;what_a_freshly-populated_database_looks_like&quot;&gt;3.3 What a freshly-populated database looks like&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
It&amp;#039;s worth pausing at this point to have a quick look at what this database &amp;#039;population&amp;#039; process has actually done (though I&amp;#039;ll give the game away up-front: not much!) For this, I&amp;#039;ll use a tool called &lt;strong&gt;sqlitebrowser&lt;/strong&gt;, which you are certainly under no obligation to install or use. It&amp;#039;s just handy to see &amp;#039;inside&amp;#039; the sort of database Niente creates at this point:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_132405.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_132405.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_132405.png?w=650&amp;amp;tok=3b4bae&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
What you&amp;#039;ll see with this sort of tool is that Niente&amp;#039;s database consists of just a handful of tables, one of which is called &amp;#039;tracks&amp;#039;… and the above screenshot shows you that the tracks table is now full of data. 15701 rows, in fact, one row per FLAC file found.
&lt;/p&gt;

&lt;p&gt;
But you&amp;#039;ll notice on the right of that screenshot are a pile of columns called things like &amp;#039;HASH_NEW&amp;#039; and &amp;#039;PERFORMER&amp;#039; and &amp;#039;COMMENT&amp;#039; which are obviously intended to contain data &lt;em&gt;about&lt;/em&gt; the FLAC whose full path and filename are listed in the FILENAME column. You&amp;#039;ll notice, however, that at this stage of the game, every single one of those columns is currently set to a value of “NULL”, which is techie talk for &amp;#039;empty&amp;#039; or &amp;#039;devoid of information&amp;#039;.
&lt;/p&gt;

&lt;p&gt;
All you&amp;#039;ve done at this point is tell Niente what files exist. It knows nothing more than that they exist on disk (and where). Filling up those columns with meaningful data is what an &amp;#039;integrity check&amp;#039; is for -and therefore, that&amp;#039;s the next step in this quick getting started guide. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.3 What a freshly-populated database looks like&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;what_a_freshly-populated_database_looks_like&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;9084-10580&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;perform_an_integrity_check&quot;&gt;3.4 Perform an Integrity Check&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
So we&amp;#039;ve created a database and loaded it with a minimal amount of data: now we need to populate the multiple &lt;em&gt;columns&lt;/em&gt; for each row of that data. We do that by tapping the letter &amp;#039;I&amp;#039; (or &amp;#039;i&amp;#039;) or arrowing across to the &amp;#039;Integrity Checks&amp;#039; menu: when we get there, we take &lt;strong&gt;Option 1: Perform a full integrity check&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll note that there are two other integrity checks we could perform on this menu, though: Option 2 is a &amp;#039;differential check&amp;#039; and Option 3 is a &amp;#039;fast check&amp;#039;. What&amp;#039;s the difference?
&lt;/p&gt;

&lt;p&gt;
In a nutshell, a &lt;strong&gt;full&lt;/strong&gt; integrity check goes through &lt;em&gt;every&lt;/em&gt; row in that TRACKS table and analyses each FLAC mentioned there for both physical and logical corruption. The &lt;strong&gt;differential&lt;/strong&gt; integrity check goes through only rows which are already known to have physical or logical corruption and re-checks them. The &lt;strong&gt;fast&lt;/strong&gt; integrity check only goes through rows which are already known to have purely &lt;em&gt;logical&lt;/em&gt; corruption and re-checks them. So you&amp;#039;d only use the differential or fast checks once you&amp;#039;ve been using Niente for some time: you start off by doing a full check and from that you learn that one file is physically corrupt, so you restore that one file from backup. Now you want to check &lt;em&gt;just that one file&lt;/em&gt; to ensure it&amp;#039;s free from corruption: and that&amp;#039;s what a differential check would do for you.
&lt;/p&gt;

&lt;p&gt;
At this point during your first &amp;#039;getting started&amp;#039; run, in fact, it doesn&amp;#039;t really matter which integrity check you go for, since &lt;em&gt;every row&lt;/em&gt; is considered physically and logically suspect (since we currently know nothing about any of them). So even if you opted to do a differential check, you&amp;#039;d end up checking every row anyway. That would not be true after you&amp;#039;ve been using Niente for a while, however, so keep that in mind for the future.
&lt;/p&gt;

&lt;p&gt;
Anyway: let me take Option 1 and perform a full integrity check:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_134209.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_134209.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_134209.png?w=650&amp;amp;tok=79e6f1&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Immediately the integrity check starts, the name of the file being analysed is displayed, along with all sorts of information gleaned by reading the file&amp;#039;s internals and its metadata tags. The information read is displayed in the main part of the screen. A counter will show you how far along the integrity check has progressed: here, I&amp;#039;m only reading the 2nd out of 412 files needing to be read.
&lt;/p&gt;

&lt;p&gt;
Integrity checks are &lt;strong&gt;slow&lt;/strong&gt;. There is a lot of work involved in reading metadata tags from hundreds or thousands of FLACs. There&amp;#039;s even more work (CPU intensive work!) involved in re-computing the MD5 hash &amp;#039;digital fingerprints&amp;#039; that tell us whether a FLAC file is physically corrupt or not. So, you have to be patient at this point: this is where all Niente&amp;#039;s efforts are employed!
&lt;/p&gt;

&lt;p&gt;
You might think, given the amount of effort involved, that at the conclusion of a full integrity check that fireworks or bells would be set off… but no: when the integrity check completes, you are simply and unceremoniously dumped back at the &amp;#039;Integrity Checks&amp;#039; menu. You wouldn&amp;#039;t particularly know that &lt;em&gt;anything at all&lt;/em&gt; had taken place, in fact.
&lt;/p&gt;

&lt;p&gt;
But let&amp;#039;s pause again at this point and take a fresh look inside Niente&amp;#039;s TRACKS table using the same sqlitebrowser tool I used earlier. When I do, I see this sort of thing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_135010.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_135010.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_135010.png?w=650&amp;amp;tok=89b4c8&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Compare this to the equivalent, earlier screenshot and you&amp;#039;ll notice that all the previously-NULL columns now have meaningful data in them. This data is what now allows us to query the database and create meaningful reports: what rows in the table, for example, have MD5 Hashes that don&amp;#039;t match, or whose PERFORMER tag isn&amp;#039;t mentioned in the ALBUM tag, and so on.
&lt;/p&gt;

&lt;p&gt;
So: a database creation populates TRACKS with &lt;em&gt;rows&lt;/em&gt;. An integrity check populates the various &lt;em&gt;columns&lt;/em&gt; of those rows with data. Only once the Niente database contains rows with a full complement of column-based data can you query the database to create reports.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.4 Perform an Integrity Check&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;perform_an_integrity_check&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;10581-14539&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;further_integrity_checks&quot;&gt;3.5 Further Integrity Checks&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Before we start producing corruption reports, however, there are two other types of integrity check I&amp;#039;ll bring to your attention: &lt;strong&gt;album art scans&lt;/strong&gt; and &lt;strong&gt;potential volume boosts&lt;/strong&gt;. These test, respectively, whether each FLAC has embedded album art and what its dimensions are if so; and whether or not a FLAC&amp;#039;s peak volume level is well below what it could be before distortion is introduced. This sort of data is &lt;strong&gt;not&lt;/strong&gt; collected as part of the &amp;#039;ordinary&amp;#039; integrity check we&amp;#039;ve just completed, because it requires extra effort to collect and not everyone cares about it. Audiophiles won&amp;#039;t go near mucking about with a FLAC&amp;#039;s volume level, for example; whilst some music fans like their album art to consist of standalone files contained within the music folder, not embedded within the FLAC itself. Neither group of people would be interested in knowing about embedded album art sizes or peak volume levels!
&lt;/p&gt;

&lt;p&gt;
If you &lt;em&gt;were&lt;/em&gt; interested in this sort of information, though, you&amp;#039;d manually have to take options 4 (or 5) and 6 (or 7) to have your new data in the TRACKS table analysed for these sorts of issues. Options 5 and 7 do &lt;strong&gt;partial&lt;/strong&gt; art or volume scans, finding rows in the TRACKS table that currently lack album art or volume boost data; options 4 and 6 do &lt;strong&gt;full&lt;/strong&gt; scans of every row in the TRACKS, regardless of their current art or volume boost status.
&lt;/p&gt;

&lt;p&gt;
The album art scan is relatively quick:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_135922.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_135922.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_135922.png?w=650&amp;amp;tok=cb6593&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…and you can see that the display as it progresses is fairly basic, with just an indication of where the scan has reached at any given point. When it concludes:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_135927.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_135927.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_135927.png?w=650&amp;amp;tok=b75129&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…you get a simple confirmation message. Click OK to return to the main program menu. This scan populates a special table in Niente&amp;#039;s database called ALBUMART:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_140225.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_140225.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_140225.png?w=650&amp;amp;tok=8ea1d4&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
That table contains the full path and filename of each FLAC and, as you can see in the columns at the right, works out for each of them what the height and width of its embedded album art is (in pixels).
&lt;/p&gt;

&lt;p&gt;
The volume scan is much harder work:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_140437.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_140437.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_140437.png?w=650&amp;amp;tok=87c0ae&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Niente visits each row in the TRACKS table in turn and literally works out the loudest volume each file gets to (where 0 decibels is the loudest, non-distorting volume you can have). In the screenshot, for example, my Appalachian Spring recording has a peak volume of -1dB, so it&amp;#039;s just a little quieter than it absolutely could be, but it&amp;#039;s probably close enough to not be worth worrying about. That&amp;#039;s why you see that &amp;#039;Possible boosts detected&amp;#039; counter at the bottom of the screen is stuck at 0: though this is a file that &lt;em&gt;could&lt;/em&gt; technically be volume-boosted, it&amp;#039;s close enough to maximum loudness that it&amp;#039;s not worth bothering about.
&lt;/p&gt;

&lt;p&gt;
On the other hand, here Niente&amp;#039;s detected a significantly-quieter-than-it-could-be recording:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_140922.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_140922.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_140922.png?w=650&amp;amp;tok=969dfa&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, the file is 7.4dB quieter than as-loud-as-possible, so it is counted as a possible volume boost. Niente&amp;#039;s default threshold for whether something counts as &amp;#039;too quiet&amp;#039; or not is 2dB, though you can adjust that in the persistent configuration file if you like.
&lt;/p&gt;

&lt;p&gt;
When the volume scan completes, you are told of the fact:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_141311.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_141311.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_141311.png?w=650&amp;amp;tok=23ea7c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Click OK to get back to the main menu. The volume check populates a new table in Niente&amp;#039;s database, called MAXVOLUMES:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_141444.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_141444.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_141444.png?w=650&amp;amp;tok=94d216&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Each row represents a &lt;em&gt;folder&lt;/em&gt; of FLACs, and the maximum possible volume boost (measured in decibels) that &lt;strong&gt;could&lt;/strong&gt; be applied to that folder without making the loudest FLAC in it distort.
&lt;/p&gt;

&lt;p&gt;
In case it isn&amp;#039;t clear, at no point during these checks is Niente &lt;em&gt;modifying&lt;/em&gt; your FLACs. No album art is being adjusted, no volume levels are being boosted. All Niente integrity checks simply &lt;em class=&quot;u&quot;&gt;read&lt;/em&gt; the FLACs listed in the TRACKS table and work out things about those files. Niente &lt;strong&gt;never writes back to FLACs&lt;/strong&gt;, and thus never adjusts anything about them.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.5 Further Integrity Checks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_integrity_checks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;14540-18773&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;reporting&quot;&gt;3.6 Reporting&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Once all necessary integrity checks have been performed, you can select the Reporting menu and start getting information &lt;em&gt;out&lt;/em&gt; of Niente, rather than loading data into it. Your first port of call should probably be the Aggregate Statistics report, which is generated by taking &lt;strong&gt;Reporting → General Reports → Option 1&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_141957.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_141957.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_141957.png?w=650&amp;amp;tok=497042&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
From this, I can see that of my 412 recordings, 1 might be physically corrupt (statistic G2), 1 has missing tags (G4), 1 has logically inconsistent PERFORMER and ALBUM tags (L4), 5 have album art problems (O1) and 31 have volume boost potential (O2).
&lt;/p&gt;

&lt;p&gt;
Responding to this report, it&amp;#039;s important to get physical corruption sorted first. Often, you&amp;#039;ll find that physical corruption makes it impossible to read tags correctly: My G2 and G4 issues, for example, might very well apply to the same FLAC, the physical corruption making it impossible to read metadata tags. Fix the physical corruption (by re-ripping or restoring from a backup) and you may well fix the missing tag issue too.
&lt;/p&gt;

&lt;p&gt;
Of course, you&amp;#039;ll need to know &lt;em&gt;which&lt;/em&gt; files are affected by these problems. That&amp;#039;s why the statistic identifier is included in the aggregate report: G2 means &amp;#039;take the General Reports, Option 2 to produce the &lt;em&gt;detailed&lt;/em&gt; report for this problem&amp;#039;, which will list every file affected individually. Here&amp;#039;s the G2 report, therefore:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_142402.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_142402.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_142402.png?w=650&amp;amp;tok=dfdb04&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
And here&amp;#039;s the G4 one:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_142451.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_142451.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_142451.png?w=650&amp;amp;tok=892902&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
So, on this occasion, the missing PERFORMER tag affects a file which &lt;em&gt;isn&amp;#039;t&lt;/em&gt; the one that&amp;#039;s corrupt. I bet it&amp;#039;s the same file as is causing the L4 PERFORMER/ALBUM tag inconsistency, though! Here&amp;#039;s the L4 report:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_142616.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_142616.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_142616.png?w=650&amp;amp;tok=b0456e&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
And sure enough, it&amp;#039;s the &lt;em&gt;The Heiress Suite&lt;/em&gt; FLAC that&amp;#039;s responsible for both statistics -and the reason is evidently that the PERFORMER tag is empty for this FLAC, so naturally it doesn&amp;#039;t match the ALBUM tag&amp;#039;s version of the data.
&lt;/p&gt;

&lt;p&gt;
You get the idea, I hope: the Aggregate Statistic report gives you a nice overview of where physical and logical issues exists; the various detailed reports allow you to pin down where and what is causing the problem.
&lt;/p&gt;

&lt;p&gt;
Fixing up any of this stuff is down to you: Niente &lt;strong&gt;never writes back to FLACs&lt;/strong&gt; and therefore is not capable of fixing up &lt;em&gt;any&lt;/em&gt; of these issues. Its job is to tell you that issues exist, not to rectify them. &lt;strong&gt;How&lt;/strong&gt; you rectify them is also down to you: physical corruption might need re-ripping or restoring from backup; a logical tagging problem, such as the missing PERFORMER tag, can simply be fixed by editing the tags associated with a FLAC (using a tool such as &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;my own Semplice&lt;/a&gt; tag editor, for example).
&lt;/p&gt;

&lt;p&gt;
But any way: that&amp;#039;s the end of our &amp;#039;first run&amp;#039; with Niente. By way of recap:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Create a database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Populate the database by quick scanning for the existence of music files&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Interrogate those music files for metadata and physical characteristics with an integrity check&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Perform &lt;em&gt;optional&lt;/em&gt; additional checks on album art and/or volume levels&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Report on the state of your music collection and use Niente&amp;#039;s reports to pin down what FLACs have which logical or physical problems&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
At this point, you can quit out of Niente altogether: tap the letter &amp;#039;Q&amp;#039; from the main menu and press [Enter] (or type 1).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.6 Reporting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;reporting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;18774-22266&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;second_runsetting_defaults&quot;&gt;4.0 Second Run: Setting Defaults&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you were to re-launch Niente at this point, this would happen:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_145549.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_145549.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_145549.png?w=650&amp;amp;tok=420b82&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Niente needs a database to do anything useful. That you previously created one makes no difference to it: it doesn&amp;#039;t &lt;em&gt;know&lt;/em&gt; to use it as its working database for this second and subsequent session. However, rather than get told &amp;#039;you need to create one&amp;#039; as happened on the first run (see Section 3.0 above, the first screenshot), this time Niente is at least smart enough to know that usable databases &lt;em&gt;do&lt;/em&gt; exist: so it&amp;#039;s now telling you that you&amp;#039;ll have to pick one, once you click [OK]:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_145815.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_145815.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_145815.png?w=650&amp;amp;tok=ed75ee&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, Niente is listing all the *.db files it knows about in the &lt;strong&gt;$HOME/.local/share/niente4/db&lt;/strong&gt; folder and letting you select the one you want to work with. The form works the same way, whether it&amp;#039;s listing just one file (as here) or several: your job is to highlight the database you want to work with for the session and &lt;strong&gt;press the Space Bar&lt;/strong&gt; to select it. An asterisk will appear next to the chosen database name and then you can click OK to submit the choice:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150008.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_150008.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150008.png?w=650&amp;amp;tok=64055b&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
A confirmation message appears and if you click OK on that, you&amp;#039;ll finally be taken to the main menu:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_144221.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_144221.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_144221.png?w=650&amp;amp;tok=7101ee&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The third line of text at the top of the screen confirms that Niente is now &amp;#039;Using database main_classical&amp;#039;, meaning the choice has taken effect.
&lt;/p&gt;

&lt;p&gt;
A similar sort of “I have no recollection!” issue arises if you were to want to add a bunch of new recordings to Niente&amp;#039;s database. You&amp;#039;ve got a working database now, but take Database menu, Option 3 to add new files to it and this happens:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150535.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_150535.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150535.png?w=650&amp;amp;tok=5dde60&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Niente has no memory of where you last looked for music files, so it has to start out prompting you for a music folder, from scratch, assuming that it should at least start in your $HOME folder.
&lt;/p&gt;

&lt;p&gt;
Which is all well and good if you like having to spell things out every time you run a program! Surely a more convenient thing would be to tell Niente to open a particular database or use a particular music folder &lt;strong&gt;by default&lt;/strong&gt;?
&lt;/p&gt;

&lt;p&gt;
And that&amp;#039;s precisely what the &lt;strong&gt;Administration menu, Option 1&lt;/strong&gt; is for:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150313.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_150313.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150313.png?w=650&amp;amp;tok=46c3cf&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll note the top two options here are currently blank: they determine what database Niente opens by default whenever it&amp;#039;s launched and what music folder it will scan automatically without prompting. It&amp;#039;s the default blankness of both parameters that trigger Niente&amp;#039;s &amp;#039;let&amp;#039;s ask every time we&amp;#039;re invoked&amp;#039; behaviour. A sensible approach is therefore, immediately after you&amp;#039;ve created a database and scanned a music folder to populate it, is to edit these configuration parameters and set sensible defaults, which is what you see me doing here:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150848.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_150848.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_150848.png?w=650&amp;amp;tok=8b7be8&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
There are, of course, lots of other parameters here whose settings can have interesting effects on the way Niente works… but the top two are the most important to set, unless you like being prompted all the time to re-specify the two most crucial bits of information Niente needs to work properly.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.0 Second Run: Setting Defaults&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;second_runsetting_defaults&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;22267-25656&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;temporarily_over-riding_defaults&quot;&gt;5.0 Temporarily Over-riding Defaults&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Given that you will now have set &lt;em&gt;default&lt;/em&gt; working databases and music folders, suppose you suddenly want to use a different database or scan a different, non-default music folder?
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changing the working database is easy: with the Database menu selected, tap the letter &amp;#039;C&amp;#039; and follow the prompts to pick a database from the list of .db files that are known to exist in $HOME/.local/share/niente4&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changing the working music folder is also just as easy: again, once the Database menu has been selected, tap the letter &amp;#039;F&amp;#039; and use the usual folder-selection form to pick a new working music folder.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Once a new database has been selected any integrity checks you perform, or reports you produce, will use that new database&amp;#039;s TRACKS table to determine what files to scan or what data to report on. The change in &amp;#039;source&amp;#039; of data is immediate.
&lt;/p&gt;

&lt;p&gt;
For example, suppose this is my initial state when launching Niente:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171130.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_171130.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171130.png?w=650&amp;amp;tok=348f6a&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
From the third row of text, in yellow, you can see I&amp;#039;ve obviously set the default database to be &amp;#039;nienteoverflow&amp;#039;. Fine: I run my Aggregate Statistics report and see this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171229.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_171229.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171229.png?w=650&amp;amp;tok=54cf79&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The overflow database knows of just five recordings, all in good shape. Now I return to the Database menu and tap &amp;#039;C&amp;#039;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171328.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_171328.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171328.png?w=650&amp;amp;tok=ee4ada&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, I&amp;#039;ve selected &amp;#039;nientemain&amp;#039; as the new working database… and I &lt;em&gt;immediately&lt;/em&gt; re-run the Aggregate Statistics report:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171418.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_171418.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_171418.png?w=650&amp;amp;tok=0d472c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This time, the report is on just &lt;em&gt;four&lt;/em&gt; recordings, not five. Clearly, a new source database lies behind this report compared to the original one.
&lt;/p&gt;

&lt;p&gt;
So, switching databases is simple and quick to do, and doesn&amp;#039;t require a lot of thinking about: it merely means that &lt;em&gt;what&lt;/em&gt; gets read when you do a new integrity check, or what gets reported on if you run a fresh report, will be &lt;strong&gt;immediately&lt;/strong&gt; different than before.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Switching music folders is slightly more troublesome, however, and you need to be careful about doing it&lt;/strong&gt;. When Niente adds the results of a new file scan to a database, &lt;em&gt;it also deletes from the database any files that are no longer on disk within the currently-active working folder&lt;/em&gt;. In other words, say you have this situation:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /music/classical → 15,000 files&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /music/overflow → 3,000 files&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
You create a database called “main” with /music/classical as the working music folder: the database will immediately be populated with 15,000 files.
&lt;/p&gt;

&lt;p&gt;
You then tap &amp;#039;F&amp;#039; and select the /music/overflow folder and then take Database menu, Option 3: your intent is to add the 3,000 overflow files to the &lt;em&gt;same&lt;/em&gt; database as already houses the 15,000 files. This is &lt;strong&gt;not&lt;/strong&gt; what will happen, however. The new file scan will certainly add the 3,000 overflow files into the database, but it will then note that none of the existing 15,000 rows in the database represent files which can be found on disk in the /music/overflow folder, so will delete them. Your database will now contain only 3,000 rows of data from the /overflow folder structure.
&lt;/p&gt;

&lt;p&gt;
Were you to tap &amp;#039;F&amp;#039; and switch back to /music/classical and again take Database menu, Option 3, your database would once more contain 15,000 rows of data …but nothing relating to files in the /music/overflow folder would remain.
&lt;/p&gt;

&lt;p&gt;
In other words, a Niente database can only hold data from one folder structure at a time. Changing the working folder and then using Database menu Option 3 to scan the new folder will always &lt;em&gt;obliterate&lt;/em&gt; the database data that was sourced from the original folder used to perform the earlier scan.
&lt;/p&gt;

&lt;p&gt;
In this scenario, you should really create two separate databases (one called &amp;#039;main&amp;#039;, another called &amp;#039;overflow&amp;#039;, for example) and use the &amp;#039;F&amp;#039; key to override the configuration file&amp;#039;s default music folder setting when working with one or other other. But you cannot ever load into a single database the contents of two distinct music folder &amp;#039;trees&amp;#039;. Your only other option, if you really wanted a single database to contain data about all 18,000 files, is to change the working folder to /music and perform a fresh scan: given that both /classical and /overflow are sub-folders within the /music folder, pointing Niente to the root of both will allow the files in both sub-folders to be scanned in a single operation.
&lt;/p&gt;

&lt;p&gt;
&lt;em class=&quot;u&quot;&gt;Also bear in mind&lt;/em&gt; that selecting a new working music folder is different from asking Niente to scan it: you have to do both things, separately. Merely selecting a working folder doesn&amp;#039;t trigger an automatic scan of that folder for FLACs -precisely because an automatic scan on a working folder change would result in mass data deletion from the working database.
&lt;/p&gt;

&lt;p&gt;
But another reminder that when I talk about Niente &amp;#039;deleting data&amp;#039;, I&amp;#039;m only talking about it deleting rows of data from within its database(s): it will &lt;em&gt;never&lt;/em&gt; delete actual FLAC files from your music folders!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5.0 Temporarily Over-riding Defaults&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;temporarily_over-riding_defaults&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;25657-30722&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;adding_new_recordings&quot;&gt;6.0 Adding New Recordings&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The commentary in Section 5 above might make you wary of ever using Database menu Option 3 to re-scan your music files, but it shouldn&amp;#039;t! A re-scan can only remove data from a database if the folder tree being scanned is new. If the folder tree is the same one as the database was previously populated with, then recordings that still exist in the locations Niente expects to find them defintiely &lt;em&gt;won&amp;#039;t&lt;/em&gt; be removed from the database.
&lt;/p&gt;

&lt;p&gt;
Meanwhile, a re-scan &lt;strong&gt;will&lt;/strong&gt; pick up on new recordings that have been added into the same folder tree. It will also delete from the database any recordings that are now not in the same folder tree they used to be in, because you couldn&amp;#039;t stand listening to them anymore or because you mucked up storing things in the right place!
&lt;/p&gt;

&lt;p&gt;
For example, say I&amp;#039;ve created a database called &amp;#039;main&amp;#039;, using music folder /music/classical. Perhaps an Aggregate Statistics report says I have 1000 recordings in my collection.
&lt;/p&gt;

&lt;p&gt;
I now rip a new CD and store it in folder &lt;strong&gt;/music/classical/Benjamin Britten/Peter Grimes (Pears  - 1958)&lt;/strong&gt;. When I take Database menu Option 3, the scan will spot the new arrival and, since it&amp;#039;s still within the same overall folder structure, it will &lt;em class=&quot;u&quot;&gt;add&lt;/em&gt; it to the existing recordings. I will now have 1001 recordings in my collection.
&lt;/p&gt;

&lt;p&gt;
Then I notice that I forgot to store the new recording in an &amp;#039;opera&amp;#039; genre sub-folder, so I use my operating system&amp;#039;s file manager to cut-and-paste the previous recording into /music/classical/Benjamin Britten/&lt;strong&gt;opera/&lt;/strong&gt;Peter Grimes (Pears  - 1958). If I now do a Database menu Option 3 re-scan, Niente will note the arrival of a new recording in the …/opera/… sub-folder, and add it to its database: temporarily, I&amp;#039;ll have 1002 recordings in my collection. Almost immediately, however, Niente will also spot that the original …/Benjamin Britten/Peter Grimes… folder no longer exists, so it will delete it from its database. I will therefore be back to having 1001 recordings in my collection, though the physical &lt;em&gt;location&lt;/em&gt; of one of them will appear to have changed.
&lt;/p&gt;

&lt;p&gt;
In other words, regular re-scans pick up new recordings and the deletion/movement/change in name of existing recordings, provided everything relates to the same music folder tree as was used to populate the database last time round.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6.0 Adding New Recordings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;adding_new_recordings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;30723-33068&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;update_the_software_periodically&quot;&gt;7.0 Update the Software Periodically&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The last thing to mention on this quick tour of starting to use Niente is: how to make sure you&amp;#039;re using the latest version of Niente. I&amp;#039;ll update the software periodically to add new features or to fix up bugs in the coding of old ones… and you&amp;#039;ll therefore want to make sure you&amp;#039;re using the latest version of the Niente software.
&lt;/p&gt;

&lt;p&gt;
That&amp;#039;s done by a visit to the &lt;strong&gt;Administration&lt;/strong&gt; menu and taking &lt;strong&gt;Option 5 : Check for software updates&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
The moment you select that option, Niente will start checking its own existing files and compare them with what equivalent files are available on this server:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_183914.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_183914.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_183914.png?w=650&amp;amp;tok=495a7e&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s not exciting to look at and in any case only takes a few seconds to complete, so you might not see any of that output anyway. At the end of the process, you might see this message displayed:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184019.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_184019.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184019.png?w=650&amp;amp;tok=3801aa&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This is the message you see when the version of Niente&amp;#039;s files on your PC matches those of the files on this server exactly: no harm has been done, nothing has been altered, there&amp;#039;s nothing to see here!
&lt;/p&gt;

&lt;p&gt;
But, you might also see this message:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184207.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_184207.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184207.png?w=650&amp;amp;tok=b9c082&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
That tells you something in one or more of Niente&amp;#039;s program files &lt;em&gt;has&lt;/em&gt; changed and that the version on this server differs from that on your PC. You would be well-advised at this point to click &amp;#039;Yes&amp;#039; (or just press [Enter] which amounts to the same thing in this context) and, if you do, the screen will change to this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184433.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_184433.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184433.png?w=650&amp;amp;tok=9008f3&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s just a standard prompt to supply your sudo password to acquire root permissions: Niente is going to copy files to /usr/bin and needs elevated privileges to be able to do so. Type in the correct password and this will happen:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184558.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_184558.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184558.png?w=650&amp;amp;tok=a5d91c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Each dot that now appears represents a fresh download of a Niente executable file. When all files have been downloaded, the screen will tell you the process is complete:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184726.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240709_184726.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240709_184726.png?w=650&amp;amp;tok=127a91&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Click OK at this point and you&amp;#039;ll be returned to the main menu. It&amp;#039;s then rather important &lt;strong&gt;to quit Niente and re-launch it&lt;/strong&gt; in order to get the changes just downloaded to be applied to the running software. As you quit, you may see error messages displayed on-screen: this is quite normal. The program being quit has just had the executables that define it changed &lt;em&gt;whilst it was running&lt;/em&gt; and therefore, it&amp;#039;s liable to get a bit confused when it exits, expecting to find the program ending at one point but the new executable ending at another. Any errors on quitting the program can therefore be ignored: just re-launch Niente and carry on from where you got to.
&lt;/p&gt;

&lt;p&gt;
My recommendation would be to run a quick check on possible software updates once a month or so. Additionally, keep an eye on the blog page of this website: I announce all new versions there as they are released.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;7.0 Update the Software Periodically&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;update_the_software_periodically&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;33069-36180&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;conclusion&quot;&gt;8.0 Conclusion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
There is always the danger in articles like this that in seeking to explain, I merely confuse! Though there are many subtleties to the way Niente can work with multiple databases and multiple different music folders, it&amp;#039;s very straightforward if all your music is found within a single tree structure and you run Niente with a single database. If you keep it that simple, the Niente &amp;#039;workflow&amp;#039; is simply:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Create the database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run a file scan to populate it&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run a full integrity check&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Optionally, run an album art check&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Optionally, run a volume boost check&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run reports when needed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Periodically run a re-scan to pick up file additions and changes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Periodically, run a differential integrity check&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Periodically, check for software updates&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Use Niente to tell you when your tagging has gone astray, or when your file system has let you down and allowed files to become corrupted. Use it, too, in conjunction with Semplice to re-tag troublesome files or to re-rip physically corrupt FLACs. Above all, use it to gain peace of mind that your digital music assets are in good shape, physically and logically.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/neninstall&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:neninstall&quot; data-wiki-id=&quot;softwares:niente:neninstall&quot;&gt;Installing Niente&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;8.0 Conclusion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conclusion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;36181-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/b/b6de8925c79aaeeec06006f0435060c2.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/nenreports">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-13T13:38:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nenreports</title>
        <link>https://www.bbritten.com/softwares/niente/nenreports</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;reporting&quot;&gt;Reporting&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Reporting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;reporting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-24&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
When you perform an integrity check of your FLAC collection with Niente, not a lot appears to happen! Sure, we see the program visiting each FLAC it knows about in turn and learning things about it:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_164038.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240704_164038.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_164038.png?w=650&amp;amp;tok=03a16a&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…but if it detects anything amiss during its file inspections, no red lights or sirens go off: the program will merely conclude its integrity check by re-displaying the main menu, which seems somewhat anti-climactic! So, performing an integrity check is an &lt;em&gt;information gathering&lt;/em&gt; exercise, but the integrity check itself never shares that information with you. In order to actually see whether or not your music collection is suffering from physical corruption or logical inconsistencies, you need to use Niente&amp;#039;s various &lt;strong&gt;reporting options&lt;/strong&gt;. These all interrogate the data collected during an integrity check and list those records found to be failing one check or another.
&lt;/p&gt;

&lt;p&gt;
In short: &lt;em class=&quot;u&quot;&gt;&lt;strong&gt;it&amp;#039;s by running reports that you at last get to understand the health and status of your music collection.&lt;/strong&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
All Niente&amp;#039;s reports are accessible under the &lt;strong&gt;Reporting&lt;/strong&gt; Menu:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_164638.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240704_164638.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_164638.png?w=650&amp;amp;tok=3dfd40&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll notice that there are three sub-menu options listed: General reports, Logical Problems reports …and a final category unimaginitively called &amp;#039;Other Reports&amp;#039;! You access any of these sub-menus by tapping the number next to the appropriate menu option: if you wanted to run a particular report on any logical inconsistencies in your music collection&amp;#039;s metadata tags, you&amp;#039;d start by tapping &amp;#039;2&amp;#039;, therefore. If you do that, you&amp;#039;ll see this sort of thing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_164916.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240704_164916.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_164916.png?w=650&amp;amp;tok=5cf6e3&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The various reports that can be generated within this category are listed in the left-hand part of the screen; the three categories of reports that were previously accessed by tapping a number are now &amp;#039;promoted&amp;#039; to appear as options on the top-bar menu. You can therefore switch between report categories easily just by pressing the left- and right-arrow cursor keys (or by tapping the initial letter of the menu required: so typing &amp;#039;g&amp;#039; will take you to the General Reports category, for example). When you&amp;#039;re done producing reports, just arrow over to the Main Menu item (or tap &amp;#039;m&amp;#039;) and choose from the options presented:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_165237.png&quot; class=&quot;media&quot; title=&quot;softwares:niente:screenshot_20240704_165237.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/screenshot_20240704_165237.png?w=650&amp;amp;tok=654eb2&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Option 1 takes you back to Niente&amp;#039;s initial main menu (where you&amp;#039;ll find the &amp;#039;Reporting&amp;#039; option remains selected), but Option 2 is provided so that you can quit out of Niente completely with a single key-press.
&lt;/p&gt;

&lt;p&gt;
When you choose to run any of Niente&amp;#039;s reports, they will be displayed in your system&amp;#039;s default browser window as an &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; document:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-11_at_20.25.06.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-11_at_20.25.06.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-11_at_20.25.06.png?w=650&amp;amp;tok=a3ffa8&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Since each report is displayed in your browser, you can use standard browser menu options to save it as a PDF or as a text file. In Firefox, for example, just click the &lt;em&gt;File → Print&lt;/em&gt; menu options and then select the &amp;#039;Save to PDF&amp;#039; option from the standard print dialog. Similarly, &lt;em&gt;File → Save Page As&lt;/em&gt; will let you save the report either as an &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; or a plain text document. 
&lt;/p&gt;

&lt;p&gt;
Bear in mind that every report is produced by reading from the Niente database &lt;strong&gt;as it was at the time of its last integrity check&lt;/strong&gt;. If, let&amp;#039;s say, you produce a report that tells you four files have PERFORMER/ALBUM tag inconsistencies and you re-tag all four of those files before re-running the report once more… you&amp;#039;re just going to see the same four files listed on the new report as they were before. The database doesn&amp;#039;t know you&amp;#039;ve re-tagged those files until you make it realise the fact by performing a new integrity check (I&amp;#039;d suggest a fast check in these particular circumstances). Only after a new integrity check is performed will you see the report contents change. Similarly, if Niente tells you 3 files are physically corrupt and you restore those files from a known good backup, so that the files on disk are no longer physically corrupt, Niente will still tell you they are corrupt, because unless you do a new integrity check (in this case, a differential one would be most appropriate), its database still stores details of the original files. The new integrity check will force Niente to re-read those files and when it does so it will, at that point, notice that the internal characteristics of the files have changed and write those new, uncorrupted characteristics back to its database.
&lt;/p&gt;

&lt;p&gt;
Finally, before I describe the reports in some detail, remember that when it is not reporting on the physical integrity of your FLACs, it&amp;#039;s drawing on &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;the Axioms of Classical Tagging&lt;/a&gt; to determine whether something is &amp;#039;wrong&amp;#039; about your FLACs or not. If you do not yourself subscribe to all or some of those Axioms, the relevant reports will be of no use to you -but Niente will keep reporting them as a problem anyway! If you think recording artists should be listed in the ARTIST tag, for example, and not in the COMPOSER one, then every single FLAC you own is likely to be reported as having a &amp;#039;ARTIST/COMPOSER&amp;#039; inconsistency. You can simply ignore such reports though, if it suits you to do so.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;25-5324&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;general_reports&quot;&gt;2.0 General Reports&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 General Reports&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;general_reports&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5325-5356&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;quick_aggregate_statistics_option_1&quot;&gt;2.1 Quick Aggregate Statistics (Option 1)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Possibly the most useful report that Niente can produce, the Quick Aggregate Statistics report is a snapshot summary of the state of your music collection. It lists 16 specific statistics, as you can see in the last screenshot above.
&lt;/p&gt;

&lt;p&gt;
Ideally, you want to see zeroes for all the rows in this report, except the first and last ones. The first row tells you how many recordings have been added to the Niente database (so hopefully that&amp;#039;s non-zero because otherwise it means you don&amp;#039;t &lt;em&gt;have&lt;/em&gt; a music collection!). The last row shows the date when the last integrity check of some sort was performed and thus the date when the database was last brought up-to-date with the state of tagging and physical integrity of your collection.
&lt;/p&gt;

&lt;p&gt;
Each statistic is prefixed with an identifier (such as &amp;#039;L4&amp;#039; or &amp;#039;O2&amp;#039;): these are the menu options you&amp;#039;d take to produce the report that &amp;#039;explodes&amp;#039; that statistic out into its detailed, constituent rows. For example, the details about what &amp;#039;Inconsistent PERFORMER/ALBUM tags&amp;#039; I have are called &amp;#039;L4&amp;#039;, which means &amp;#039;Take the &lt;strong&gt;L&lt;/strong&gt;ogical Issues Reports menu, and run report &lt;strong&gt;4&lt;/strong&gt; from there&amp;#039; (i.e., L4). The details behind the &amp;#039;Recordings not yet checked&amp;#039; statistic, however, can be obtained by running the &amp;#039;&lt;strong&gt;G&lt;/strong&gt;eneral&amp;#039; report number &lt;strong&gt;3&lt;/strong&gt; (G3). Likewise, to list all the files that are missing sample rates in their file names, I&amp;#039;d need to run the &lt;strong&gt;O&lt;/strong&gt;ther report number &lt;strong&gt;3&lt;/strong&gt;, or O3.
&lt;/p&gt;

&lt;p&gt;
You get the idea, I hope: each non-zero row in the Quick Aggregate Statistics report should be regarded as a trigger to produce the corresponding &lt;em&gt;detailed&lt;/em&gt; report that will list the specifics of what&amp;#039;s been detected as potentially going wrong.
&lt;/p&gt;

&lt;p&gt;
Note that two statistics may &lt;strong&gt;not&lt;/strong&gt; be listed in this Aggregate Statistics report, though they will be by default. The rows O2 (“Potential Volume Boosts”) and O4 (“Missing audio data in filenames:”) will only appear if you have configured the persistent configuration parameters &lt;strong&gt;Report on volume boosts&lt;/strong&gt; and&lt;strong&gt; Report filenames without bitdepth data&lt;/strong&gt; respectively. Both parameters default to &amp;#039;yes&amp;#039;, so those rows &lt;em&gt;will&lt;/em&gt; appear by default. However, if you switch those parameters to &amp;#039;no&amp;#039;, because you simply aren&amp;#039;t interested in doing volume boosts to your music files and/or don&amp;#039;t care whether their physical files contain bit-depth and sample-rate information, then those rows will disappear from the aggregate report. You can always run the equivalent detailed reports, however, even if you&amp;#039;ve turned off aggregate reporting for those particular issues.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.1 Quick Aggregate Statistics (Option 1)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;quick_aggregate_statistics_option_1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5357-7934&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;recordings_with_physical_integrity_problems_option_2&quot;&gt;2.2 Recordings with physical integrity problems (Option 2)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
This is probably a critical report -because even if you don&amp;#039;t agree with one iota of how I believe classical music should be tagged, we can all agree that the audio stream of your FLAC files should not undergo any alteration from the moment it was created when you ripped the CD -and this report lists those FLAC files where that doesn&amp;#039;t appear to be true:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.36.09.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_13.36.09.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.36.09.png?w=650&amp;amp;tok=2a1eb9&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
As you can see from the report itself, here Niente is comparing the MD5 hash, or &amp;#039;digital fingerprint&amp;#039;, that is stored internally within a FLAC when it is first created with a freshly-computed MD5 hash: if there&amp;#039;s a tiny change in the bits making up the audio stream within a FLAC, the result will be that the new hash value won&amp;#039;t match the old one… and that tiny change is probably bit-rot, meaning the file is internally corrupt.
&lt;/p&gt;

&lt;p&gt;
That said, it&amp;#039;s impossible to compare nothing to something, so if either the new or old MD5 hashes is blank, that will also trigger the inclusion of a FLAC file on this report. That &lt;em&gt;might&lt;/em&gt; indicate corruption -or it might indicate something has gone wrong with the Niente data collection process.
&lt;/p&gt;

&lt;p&gt;
There is no fixing physical corruption within the file itself. The only thing you can do for files listed on this report is to replace the file -either by backup copies which you hopefully have available to you from a time before the file was first detected as corrupt; or by re-ripping the file from the original CD (or re-downloading it from whatever digital emporium you buy your music from!) If the file is there because one or other hash values is declared &amp;#039;empty&amp;#039;, a fresh integrity check &lt;em&gt;might&lt;/em&gt; resolve the issue.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.2 Recordings with physical integrity problems (Option 2)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recordings_with_physical_integrity_problems_option_2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;7935-9696&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;recordings_not_yet_analysed_at_all_option_3&quot;&gt;2.3 Recordings not yet analysed at all (Option 3)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
This report selects for FLACs that are missing &lt;strong&gt;all&lt;/strong&gt; the tags which &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;the first Axiom of classical music tagging&lt;/a&gt; states should be considered compulsory: tags such as ALBUM, COMPOSER, ARTIST, TITLE, TRACKNUMBER and so on. If &lt;em&gt;all&lt;/em&gt; of those are missing for a particular file, it&amp;#039;s probably because no integrity check has yet been performed on it. This is, in fact, the &amp;#039;natural&amp;#039; state for FLACs that have just been added to your collection: an incremental addition of the files (using the &lt;strong&gt;Database&lt;/strong&gt; menu, &lt;strong&gt;Option 3&lt;/strong&gt;) will mean the file&amp;#039;s physical location will have been added to Niente&amp;#039;s database, but until a fresh integrity check has been performed, the internal tag details for such files will remain empty. That&amp;#039;s considered something you should know about!
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.37.41.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_13.37.41.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.37.41.png?w=650&amp;amp;tok=12683d&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Performing a new full, incremental or fast integrity check should see these rows disappear off this report.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.3 Recordings not yet analysed at all (Option 3)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recordings_not_yet_analysed_at_all_option_3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9697-10728&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;files_with_one_or_more_missing_tags_option_4&quot;&gt;2.4 Files with one or more missing tags (Option 4)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The not-yet-analysed report (see Section 2.3 above) will list files that have &lt;strong&gt;all&lt;/strong&gt; the &amp;#039;compulsory&amp;#039; tags missing. That&amp;#039;s usually fixed by running a new integrity check. &lt;em&gt;This&lt;/em&gt; report, on the other hand, lists files that have &lt;em&gt;some&lt;/em&gt; of those tags missing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_11.53.17.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_11.53.17.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_11.53.17.png?w=650&amp;amp;tok=c89896&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The report will actually list which specific tags are missing over on the right-hand side.
&lt;/p&gt;

&lt;p&gt;
The only way some tags can be present and others missing is if the missing tags were never actually written to the FLACs in the first place. This isn&amp;#039;t, therefore, fixable by doing a fresh integrity check: it implies that there&amp;#039;s actually an issue with the way you tag your files in the first place. Only a fresh round of tagging can resolve this issue!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.4 Files with one or more missing tags (Option 4)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;files_with_one_or_more_missing_tags_option_4&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;10729-11572&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;logical_issues_reports&quot;&gt;3.0 Logical Issues Reports&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I won&amp;#039;t detail the five reports in this section. They all work in ways similar to what you&amp;#039;ve already seen in Section 2.0 above so should be familiar in operation in that regard. The point to make about them all, collectively, is that they are fundamentally &amp;#039;enforcing&amp;#039; the rules of tagging I set out in my article on &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;the Axioms of Classical Tagging&lt;/a&gt;. If you agree with all or most of the axioms presented there, then all or most of these five reporrts will prove useful to you. For specifics about what Niente expects to be present in which tags and what logical consistency checks it will therefore perform, please see &lt;a href=&quot;https://www.bbritten.com/softwares/niente/logicalcorruption&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:logicalcorruption&quot; data-wiki-id=&quot;softwares:niente:logicalcorruption&quot;&gt;the Logical Inconsistencies section&lt;/a&gt; of this user manual.
&lt;/p&gt;

&lt;p&gt;
If, however, you fundamentally disagree with my proposed tagging strategy, then you will probably want to ignore all these reports! If you don&amp;#039;t write your ALBUM tags as &amp;#039;composition (performer - year)&amp;#039;, for example (see Axiom 5), then you won&amp;#039;t have any need for a report that checks whether the performer component of ALBUM matches the PERFORMER tag, or whether the recording year component of ALBUM matches the YEAR (or DATE) tag.
&lt;/p&gt;

&lt;p&gt;
That&amp;#039;s not true of the General or Other reports, on the whole: even if you tag your FLACs in a wildly different way to me, reporting on tags which are missing, or which are possible duplicates of each other, or which are physically corrupt sound like good things to know about.
&lt;/p&gt;

&lt;p&gt;
So, I guess my point is: the reports in the &amp;#039;Logical Issues Reports&amp;#039; may not be to your taste, but the data is there, should you ever change your mind!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 Logical Issues Reports&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logical_issues_reports&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;11573-13198&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;other_reports&quot;&gt;4.0 Other Reports&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.0 Other Reports&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;other_reports&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;13199-13228&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;recordings_with_album_art_issues&quot;&gt;4.1 Recordings with album art issues&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
There will be no items on this report unless you have first performed a special &amp;#039;check album art&amp;#039; integrity check (see the &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Options 4 or 5&lt;/strong&gt;). Performing such a check adds the pixel dimensions of the &lt;em&gt;embedded&lt;/em&gt; album art found in a FLAC file to a special &amp;#039;albumart&amp;#039; table within the Niente database:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.02.02.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_12.02.02.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.02.02.png?w=650&amp;amp;tok=0ed13b&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Once that table has been populated, rows will appear on this report for one or more of three &lt;strong&gt;configurable&lt;/strong&gt; reasons:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The album art height and width are not exactly equal to each other&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The height is above or below a threshold size&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The width is above or below a threshold size&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
By default, Niente expects album art to be &lt;em&gt;square&lt;/em&gt;, so height and width dimensions not being identical is considered an issue. If non-square art is not actually a problem for you, you can turn off Niente&amp;#039;s demand for square art by setting the &amp;#039;Should album art be square&amp;#039; option in the persistent configuration file to &amp;#039;no&amp;#039; (See &lt;strong&gt;Administration&lt;/strong&gt; menu &lt;strong&gt;Option 1&lt;/strong&gt;).
&lt;/p&gt;

&lt;p&gt;
The configuration file also has settings for &amp;#039;Threshold (pixels) for small art&amp;#039; and &amp;#039;Threshold (pixels) for large art&amp;#039;. These determine if an embedded piece of album art should be considered too small or too large, respectively. From the example report shown above, it would appear that whilst all my album art is nicely square, it&amp;#039;s considered too big: from the specific numbers shown, I would guess that my &amp;#039;large art&amp;#039; threshold is set to 1400 pixels, so images bigger than that are considered &amp;#039;too big&amp;#039;. Artwork which is too small will often display in a blurry, washed out manner; artwork can also be huge without actually appearing any better for it: but at either end of the spectrum, you&amp;#039;re in charge of declaring what &amp;#039;too small&amp;#039; and &amp;#039;too large&amp;#039; should mean.
&lt;/p&gt;

&lt;p&gt;
For anything listed on this report, the fix is to re-acquire better album art and manually apply it to the FLACs in question (using a tool such as &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;Semplice&lt;/a&gt;&lt;/strong&gt;, for example).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.1 Recordings with album art issues&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recordings_with_album_art_issues&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;13229-15312&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;recordings_with_possible_real_volume_boosts&quot;&gt;4.2 Recordings with possible real volume boosts&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
There will be no items on this report unless you have first performed a special &amp;#039;check for volume boosts&amp;#039; integrity check (see the Integrity Checks menu, Options 6 or 7). Performing such a check makes Niente scan the contents of each FLAC listed in your database for peak loudness levels (making it quite a slow process). This is over-simplifying to some extent, but at 0dB (decibels), a FLAC is considered to be as loud as it is possible to be without clipping or distortion. A FLAC whose peak loudness is measured to be -1dB is slightly quieter than that; one whose peak loudness is -8dB is very much quieter than that.
&lt;/p&gt;

&lt;p&gt;
The configuration file (see the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 1&lt;/strong&gt;) allows you to specify a &amp;#039;Threshold (dB) for volume boosts&amp;#039; parameter. By default, it&amp;#039;s set to &amp;#039;2&amp;#039;, meaning that if a FLAC is measured to have a peak loudness of (say) -1.5dB, though it&amp;#039;s some way off being &amp;#039;maximally loud&amp;#039; it&amp;#039;s not crossed the -2dB threshold for being considered a &amp;#039;problem&amp;#039;. A FLAC measured at -3dB peak loudness &lt;em&gt;would&lt;/em&gt; appear on this report, however, because it&amp;#039;s quieter than that the -2dB threshold:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.28.57.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_12.28.57.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.28.57.png?w=600&amp;amp;tok=243c74&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
In this example report, you&amp;#039;ll see that one of my Alessandro Striggio choral works could be volume-boosted by a whopping 10.9 decibels, were I to use a tool like &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;Semplice&lt;/a&gt; to do so. This does not mean that it&amp;#039;s a good idea to actually perform that sort of volume boost: one organ recording I have in my collection has a peak volume some 19dB lower than its maximum possible loudness, but when you apply a volume boost to it, you quickly discover why: it was recorded in a cathedral that can be heard to be full of footsteps and people walking around! The recording engineer decided to produce the CD at its very quiet level precisely to hide that &amp;#039;noise floor&amp;#039; under the more foreground sound of the organ. Apply a volume boost to it and that noise floor becomes so prominent that it&amp;#039;s difficult to focus on anything but the noise! So, just because recordings are listed as boostable &lt;em&gt;does not mean&lt;/em&gt; that they actually should be boosted! Making that sort of decision is why you have a pair of ears :)
&lt;/p&gt;

&lt;p&gt;
You will note, too, that this report lists &lt;em&gt;folders&lt;/em&gt;, not files. Whilst the &amp;#039;check for volume boosts&amp;#039; integrity check does work out the peak volume in each individual &lt;em&gt;file&lt;/em&gt;, this report aggregates and summarises by &lt;em&gt;folder&lt;/em&gt;. It would, after all, be pointless to tell you that file 02-Dolce.flac could be boosted by 8dB if file 01-Furioso.flac already has a peak volume that is at the theoretical, non-distorting maximum: in such a scenario, you couldn&amp;#039;t volume-boost just file 2 without completely screwing up the &lt;em&gt;relative&lt;/em&gt; loudness between the two tracks. You also couldn&amp;#039;t boost both files by 8dB, because that would make file 1 sound ghastly. Therefore, confronted with two files with these loudness values, Niente will leave the entire folder off the report: &lt;em&gt;nothing&lt;/em&gt; in that folder can be boosted without either over-boosting file 1, or changing the relative volume between files 1 and 2.
&lt;/p&gt;

&lt;p&gt;
Note that Niente is not itself going to alter the volume levels in &lt;em&gt;any&lt;/em&gt; file. It merely reports on those recordings which &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;a tool like Semplice&lt;/a&gt;, for example, &lt;strong&gt;would&lt;/strong&gt; be able to boost the volume of, as a completely separate exercise. It is therefore entirely safe to perform a volume boost check and to report on the results: nothing is actually modified in your music files by performing either action.
&lt;/p&gt;

&lt;p&gt;
Finally, recall that the persistent configuration file has a setting for &amp;#039;&lt;strong&gt;Report on volume boosts&lt;/strong&gt;&amp;#039;, which is &amp;#039;yes&amp;#039; by default, but could be set to &amp;#039;no&amp;#039;. That parameter controls whether a count of possible volume boosts should appear in your aggregate statistics report. It does not stop you running this report, no matter what it&amp;#039;s set to.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.2 Recordings with possible real volume boosts&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recordings_with_possible_real_volume_boosts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;15313-19277&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;recordings_with_missing_replaygain&quot;&gt;4.3 Recordings with missing ReplayGain&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
This report will list any FLAC file which does &lt;em&gt;not&lt;/em&gt; possess a REPLAYGAIN_ALBUM_GAIN metadata tag. That tag data is collected as part of a routine full, differential or fast integrity check:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.34.46.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_12.34.46.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.34.46.png?w=650&amp;amp;tok=22f4a7&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
ReplayGain is an audio industry standard way of performing &lt;em&gt;software&lt;/em&gt; volume boosts. Rather than adjusting the physical volume level of a FLAC, you can simply store a &amp;#039;decibel boost&amp;#039; tag in the metadata for a FLAC. A suitable media player can read that tag and apply the required volume boost dynamically, in real time, without the data bits in the FLAC&amp;#039;s audio stream ever being modified. Niente refers to this as being a &amp;#039;metadata volume boost&amp;#039;, because the degree of boost is entirely governed by the contents of the tag metadata found in a FLAC.
&lt;/p&gt;

&lt;p&gt;
Niente is &lt;strong&gt;not&lt;/strong&gt; computing this ReplayGain value for you: it is simply recording whether or not such a computation &lt;em&gt;has&lt;/em&gt; been performed and written as a tag by another tool. Semplice, for example, &lt;em&gt;will&lt;/em&gt; analyze a FLAC and compute a ReplayGain value for it; Niente is just checking that process has been performed by that sort of independent tool.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.3 Recordings with missing ReplayGain&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recordings_with_missing_replaygain&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;19278-20506&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;files_missing_audio_data_in_filenames&quot;&gt;4.4 Files missing audio data in filenames&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
It&amp;#039;s not compulsory, but it is sometimes quite helpful to have some indication of the technical audio qualities of a FLAC visible in the physical filename of the FLAC: whether it&amp;#039;s a standard rip from a CD or a high-resolution rip from an SACD, for example, is something it&amp;#039;s quite helpful to see made visible in your PC&amp;#039;s standard file manager. 
&lt;/p&gt;

&lt;p&gt;
The two specific bits of audio data this report expects to find in a physical file&amp;#039;s name are &lt;strong&gt;bit-depth&lt;/strong&gt; and &lt;strong&gt;sample rate&lt;/strong&gt;. A FLAC ripped from a standard audio CD can be expected to have been mastered at 16-bit and 44,100Hz, for example; one from an SACD might be 24-bit and 192,000Hz. A tool like Semplice will (if so configured) physically change a FLAC&amp;#039;s filename to include this audio data: so you might end up with a FLAC called 01-Allegro-16-44100.flac, for example. This report then looks for files that &lt;em&gt;don&amp;#039;t&lt;/em&gt; have that sort of “hyphen-number-hyphen-number” component in their filenames:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.49.59.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_12.49.59.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_12.49.59.png?w=650&amp;amp;tok=18ac35&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Notice that the report is very specific about the format this audio data needs to take: that third row in the report, for example, &lt;em&gt;does&lt;/em&gt; contain a bit-depth and sample rate, but they are fullstop (period) delimited, not hyphen-delimited and that doesn&amp;#039;t count as far as Niente is concerned!
&lt;/p&gt;

&lt;p&gt;
The fix for anything listed on this report is to manually change the physical filename by hand or, perhaps, to use a tool like Semplice to auto-adjust the filename for you. So long as the two bits of audio data end up in the filename in the correct format, a fresh integrity check will have Niente noticing that these filenames now &lt;em&gt;do&lt;/em&gt; contain the required data.
&lt;/p&gt;

&lt;p&gt;
You may have absolutely no interest in naming your music files in this way, of course, in which case this report is an irrelevance for you. You may then well want to take the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 1&lt;/strong&gt; and set the &amp;#039;Report filenames without bitdepth data&amp;#039; to a value of “no”. That will &lt;em&gt;not&lt;/em&gt; stop you being able to run this report. It will, however, mean that the “O4” statistic will drop off the Aggregate Statistics report: the lack of audio data in filenames will not be an issue that Niente cares to report on.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.4 Files missing audio data in filenames&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;files_missing_audio_data_in_filenames&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;20507-22775&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;folders_with_multiple_physical_files&quot;&gt;4.5 Folders with multiple physical files&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
A symphony will usually consist of four movements: should a &lt;em&gt;recording&lt;/em&gt; of a symphony come with four &amp;#039;tracks&amp;#039;? In this writer&amp;#039;s opinion, there&amp;#039;s only one symphony, so there should only be one physical FLAC, containing within itself all four movements. &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semsuper&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semsuper&quot; data-wiki-id=&quot;softwares:semplice:semsuper&quot;&gt;Semplice&lt;/a&gt; can construct such &amp;#039;SuperFLACs&amp;#039; by merging multiple per-track FLACs into a single per-composition FLAC. This report lists examples of where that has &lt;strong&gt;not&lt;/strong&gt; happened: where, in other words, there are multiple FLACs in the same folder:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.07.35.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_13.07.35.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.07.35.png?w=650&amp;amp;tok=da0084&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, for example, I would appear to have three FLACs in one folder, which &lt;em&gt;I&lt;/em&gt; would consider a problem. Note that the ALBUM and ARTIST tags for the three FLACs would also have to be identical for the folder to appear on this report: if I had a Mozart symphony, a Beethoven Piano Concerto and a Britten opera all housed in the same folder, that would &lt;strong&gt;not&lt;/strong&gt; be considered a problem (though I personally would regard that as extremely poor music collection curation!)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.5 Folders with multiple physical files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;folders_with_multiple_physical_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;22776-23895&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;possible_duplicate_recordings&quot;&gt;4.6 Possible duplicate recordings&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When a FLAC file is first created, a &amp;#039;digital fingerprint&amp;#039; of it, in the form of an MD5 hash value, is written into the very fabric of the FLAC itself. That hash value is calculated from the audio signal contained within the FLAC: it is therefore vanishly unlikely that two different FLACs will ever have the same hash value fingerprint. If they do, it is extremely probable that they are actually two copies of the &lt;em&gt;same&lt;/em&gt; recording, regardless of the fact that their filenames, tags or other attributes might be very different:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.12.30.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_13.12.30.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.12.30.png?w=600&amp;amp;tok=18203e&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve had this sort of thing happen to me when I&amp;#039;ve catalogued something as &amp;#039;Orchestral&amp;#039; then later wondered whether I had a copy of it and looked under &amp;#039;Symphonic&amp;#039;. Assuming I don&amp;#039;t have a copy, I then purchase the recording again and catalogue the new rip under &amp;#039;Symphonic&amp;#039;. Despite the change in GENRE tag, the audio data doesn&amp;#039;t lie and will probably turn into the same MD5 hash value for each… and, at that point, both recordings will appear on this report.
&lt;/p&gt;

&lt;p&gt;
The &amp;#039;fix&amp;#039; for anything appearing as a possible duplicate is first to &lt;em&gt;listen&lt;/em&gt; to the recordings, then pick a “winner”: deletion of the duplicate off your hard disk (followed by an incremental database scan and a fresh differential integrity check) will see one of the recordings removed from the Niente database and thus off this report.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.6 Possible duplicate recordings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;possible_duplicate_recordings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;23896-25351&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;display_the_operations_log&quot;&gt;4.7 Display the operations log&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Every time you ask Niente to create a database or perform an integrity check, it records the fact in its Operations Log. You can view this log at any time by taking Reports Menu &lt;strong&gt;Option 14&lt;/strong&gt;. It is not a particularly exciting report and I doubt you&amp;#039;ll ever really &lt;em&gt;want&lt;/em&gt; to run it:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.30.42.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_2026-02-13_at_13.30.42.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_2026-02-13_at_13.30.42.png?w=650&amp;amp;tok=33b484&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…but it&amp;#039;s there if you want it and it can prove handy in reminding you the last time you did a full integrity check, for example: if it was a long time ago, it might be time to do a fresh one.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.7 Display the operations log&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;display_the_operations_log&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;25352-25948&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;conclusion&quot;&gt;5.0 Conclusion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Running integrity checks of various types is certainly where Niente puts in the most &lt;em&gt;work&lt;/em&gt;: but it&amp;#039;s when you run reports that are driven off the database that&amp;#039;s populated by integrity checks that Niente really becomes &lt;em&gt;useful. &lt;/em&gt;The Quick Aggregate Summary should be your initial guide to what&amp;#039;s going wrong with your music collection: use its various non-zero statistics to guide you to running the related reports which drill down to give your the specifics as to which FLACs are violating the rules, and how. A bunch of &amp;#039;other reports&amp;#039; can then be used to view interesting information about your collection which maybe doesn&amp;#039;t rise to the level of a physical or logical error as such, but may still be something you&amp;#039;d like to fix up anyway.
&lt;/p&gt;

&lt;p&gt;
If you subscribe to this website&amp;#039;s promoted ways to tag classical music, a bunch of tag-related reports will prove useful in making sure you stick to the &amp;#039;rules&amp;#039;. If you don&amp;#039;t, then there are still plenty of reports which you should find of use and interest.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nendbcreate&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nendbcreate&quot; data-wiki-id=&quot;softwares:niente:nendbcreate&quot;&gt;Database Menu&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenintegrity&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenintegrity&quot; data-wiki-id=&quot;softwares:niente:nenintegrity&quot;&gt;Intergrity Checks Menu&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;Reporting Menu&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5.0 Conclusion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conclusion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;25949-&amp;quot;} --&gt;
&lt;!-- no cachefile used, but created /var/www/dokuwiki/data/cache/9/97bf8ae34ff76d63734955bb456e9555.xhtml --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/nenruntime">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-11T11:49:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nenruntime</title>
        <link>https://www.bbritten.com/softwares/niente/nenruntime</link>
        <description>
&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/softwares/niente/inspecting02.jpg?w=220&amp;amp;tok=f5b807&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;runtime_parameters&quot;&gt;Runtime Parameters&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Runtime Parameters&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;runtime_parameters&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;52-84&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Niente is, inevitably, a heavy-duty program to run that happens also to be extremely boring to watch running! It&amp;#039;s job, after all, is to run off to your PC&amp;#039;s hard disk and scan lots and lots of FLAC files, reading their multiple pieces of metadata and (during a full or differential integrity check, at least) re-computing MD5 hash sums for the audio signal they contain. It&amp;#039;s tedious, quite slow and not at all exciting!
&lt;/p&gt;

&lt;p&gt;
It is, accordingly, much more likely that you will want to &lt;em&gt;schedule&lt;/em&gt; Niente to do its work in an &lt;strong&gt;unattended&lt;/strong&gt;, non-interactive manner -and for that sort of thing, rather than navigating your way around Niente&amp;#039;s (relatively!) attractive menuing program interface, you&amp;#039;ll want to be able to give commands to schedulers such as &lt;strong&gt;cron&lt;/strong&gt; to run things without you needing to be present. For that, Niente provides a set of eight run-time parameters (that is, arguments you can add to the basic &amp;#039;niente&amp;#039; command), each of which can perform different functions.
&lt;/p&gt;

&lt;p&gt;
Here are the available parameters, in table form:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; Parameter &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Purpose/Function &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; Menu Equivalent &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--scan-full&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Wipes the existing tracks from a database and then re-scans default music folder to re-populate it from scratch&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Database → 2&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--scan-new&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Scans the default music folder for new or modified recordings and adds them to the existing database&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Database → 3&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-full&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a full integrity check (i.e., physical and logical checks for all recordings in the database)&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 1&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-differential&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a differential integrity check (i.e., physical &amp;amp; logical checks for recordings with previously-detected physical or logical corruption issues)&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 2&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-fast&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a fast integrity check (i.e., logical check only of recordings already known to the database)&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 3&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-art&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a new album art check for all recordings known to the database&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 4&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--check-volume&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Performs a complete check of possible volume boosts for all recordings in the database&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Integrity Checks → 6&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;--aggstats&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Generates a quick aggregate statistics report and writes it to &lt;strong&gt;/tmp/nientestats.csv&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Reporting → General → 1&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1150-2442&amp;quot;} --&gt;
&lt;p&gt;
You&amp;#039;ll note that these parameters depend on what&amp;#039;s configured in the persistent configuration file (Administration menu, Option 1) to determine (a) what database to refresh or check and (b) what music folder is to be used to locate new or modified recordings. Make sure you&amp;#039;ve configured appropriate values for the &amp;#039;default music folder&amp;#039; and &amp;#039;default music database name&amp;#039; parameters before using these run-time parameters, therefore.
&lt;/p&gt;

&lt;p&gt;
The one standout peculiarity in these parameters is the last one: &lt;strong&gt;--aggstats&lt;/strong&gt;. It&amp;#039;s odd, because it generates a report (the Quick Aggregate Statistics one) …and reports are generally only useful if someone is around to read them. Its existence in this list of &amp;#039;things to do unattended&amp;#039; would therefore seem to be a bit peculiar… and I confess it&amp;#039;s there simply for the benefit of this website! You may know that my own listening habits are published on this site …and that, specifically, the &lt;a href=&quot;https://www.bbritten.com/agstats/agstats&quot; class=&quot;wikilink1&quot; title=&quot;agstats:agstats&quot; data-wiki-id=&quot;agstats:agstats&quot;&gt;Aggregate Statistics&lt;/a&gt; report lists the results of my latest Niente integrity check. I therefore need my dedicated Niente server to generate a Quick Aggregate Statistics report at around midnight each day in unattended mode (it&amp;#039;s written out to the /tmp folder) and have that copied across to this site&amp;#039;s web server. Niente doesn&amp;#039;t handle the file copying (that&amp;#039;s cron&amp;#039;s job!), but at least the &lt;strong&gt;/tmp/nientestats.csv&lt;/strong&gt; text file is there on disk, ready for the secure copy across the network when it finally kicks in. Incidentally, though the file&amp;#039;s extension says it&amp;#039;s a &lt;strong&gt;c&lt;/strong&gt;omma &lt;strong&gt;s&lt;/strong&gt;eparated &lt;strong&gt;v&lt;/strong&gt;ariable file, it is in fact a &lt;em&gt;pipe&lt;/em&gt;-separated one: that is, the field separator is a | character, not a comma. It amounts to the same thing for processing purposes, regardless of the file extension, anyway!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;85-4227&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;using_runtime_parameters&quot;&gt;2.0 Using Runtime Parameters&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Run-time parameters are double-dashed keywords added to the basic &amp;#039;niente&amp;#039; command. For example, if you wanted to schedule a nightly re-scan of your music folders, at 1 minute to midnight, to check if any new recordings had been added to the collection, you might add this to your crontab:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;59 23 * * * /usr/bin/niente4.sh --scan-new&lt;/pre&gt;

&lt;p&gt;
And if you wanted to do a full integrity check on the first day of each month at 1AM, you might make this crontab entry:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;00 1 1 * * /usr/bin/niente4.sh --check-full&lt;/pre&gt;

&lt;p&gt;
…and so on.
&lt;/p&gt;

&lt;p&gt;
Note that the operations triggered by these unattended operations all set the PATH variable to &lt;strong&gt;PATH=/usr/local/bin:/usr/bin:/bin:$PATH&lt;/strong&gt;, so if you are creating your own scripts to automate things, you shouldn&amp;#039;t need to worry about setting the PATH variable yourself (which, of course, is usually not set correctly when crontab jobs are run outside of a defined user context).
&lt;/p&gt;

&lt;p&gt;
You can, of course, use the run-time parameters direct from the command line: they aren&amp;#039;t &lt;em&gt;only&lt;/em&gt; to be used in a crontab, though that&amp;#039;s where they make most sense. If you simply want to perform a fast integrity check without having to tap your way through a set of program menus, just type the command &lt;strong&gt;niente --check-fast&lt;/strong&gt; and the task will run immediately. There won&amp;#039;t be &lt;em&gt;any&lt;/em&gt; program feedback, however: if the recordings scan or integrity check takes hours to complete, you&amp;#039;ll simply be staring at a blank screen for that many hours. There&amp;#039;ll be no indication of progress, in other words. You can, of course, add an ampersand to the command so that you at least get your terminal back as the operation runs in the background: &lt;strong&gt;niente --check-full &amp;amp;&lt;/strong&gt; will perform a full integrity check but without tying up your terminal session for the duration (just press [Enter] twice after submitting that command to get your terminal back in foreground use whilst the job runs in the background).
&lt;/p&gt;

&lt;p&gt;
Unattended operations will always leave a record of their start and completion times in the Operations Log (visible via the Administration menu, Option 6), so you can always verify that cron jobs are running correctly after the event by looking there.
&lt;/p&gt;

&lt;p&gt;
If you are working with a NAS store of music, mounted via NFS or some other file sharing mechanism, be aware that running Niente in unattended mode carries risks: if, for example, your Niente machine is rebooted and, for whatever reason, the NAS music share is unavailable when it comes back up, your usual music folder will appear to be empty. Fire off a &lt;strong&gt;niente4.sh --scan-new&lt;/strong&gt; operation at this point and your entire Niente database will be wiped, because all previously-existing music files will &lt;em&gt;appear&lt;/em&gt; to have ceased to exist! That&amp;#039;s obviously not a disaster, in the sense that you can always re-populate from scratch once the network drive is mounted properly… but it&amp;#039;s a pain to have to re-compute all your integrity checks from scratch!
&lt;/p&gt;

&lt;p&gt;
For this reason, when I schedule my Niente unattended operations in cron, I do so like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;59 23 * * * /usr/bin/mountpoint -q /netmusic &amp;amp;&amp;amp; /usr/bin/niente4.sh --scan-new
59 2 * * * /usr/bin/mountpoint -q /netmusic &amp;amp;&amp;amp; /usr/bin/niente4.sh --check-differential&lt;/pre&gt;

&lt;p&gt;
This simply runs the &lt;strong&gt;mountpoint&lt;/strong&gt; command to ensure that “/netmusic” is actually a mounted file system and not an empty folder. It runs it silently (that&amp;#039;s the -q switch at work) and only runs the Niente commands after the double-ampersand operator &lt;em&gt;if&lt;/em&gt; the music folder &lt;strong&gt;is&lt;/strong&gt; mounted properly. That saves inadvertent &amp;#039;wipe-outs&amp;#039; of your complete Niente database!
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Using Runtime Parameters&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;using_runtime_parameters&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4228-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/f/fdfce8a62ca9a577146e7abb193db583.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/niente">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-06T14:37:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>niente</title>
        <link>https://www.bbritten.com/softwares/niente/niente</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;niente_version_4the_flac_checker&quot;&gt;Niente Version 4 : The FLAC Checker&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Niente Version 4 : The FLAC Checker&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_version_4the_flac_checker&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-51&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;user_manual_index&quot;&gt;User Manual Index&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/beethoven-inspecting7.png?w=220&amp;amp;tok=c77811&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/physicalcorruption&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:physicalcorruption&quot; data-wiki-id=&quot;softwares:niente:physicalcorruption&quot;&gt;Quick Guide to FLAC Physical Corruption&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/logicalcorruption&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:logicalcorruption&quot; data-wiki-id=&quot;softwares:niente:logicalcorruption&quot;&gt;Quick Guide to FLAC Logical Inconsistencies&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/neninstall&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:neninstall&quot; data-wiki-id=&quot;softwares:niente:neninstall&quot;&gt;Installing Niente&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenquick&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenquick&quot; data-wiki-id=&quot;softwares:niente:nenquick&quot;&gt;A Quick Start Guide&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nendbcreate&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nendbcreate&quot; data-wiki-id=&quot;softwares:niente:nendbcreate&quot;&gt;Database Creation and Population&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenintegrity&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenintegrity&quot; data-wiki-id=&quot;softwares:niente:nenintegrity&quot;&gt;Integrity Checks&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenreports&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenreports&quot; data-wiki-id=&quot;softwares:niente:nenreports&quot;&gt;Reporting&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenconfig&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenconfig&quot; data-wiki-id=&quot;softwares:niente:nenconfig&quot;&gt;The Persistent Configuration File&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenruntime&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenruntime&quot; data-wiki-id=&quot;softwares:niente:nenruntime&quot;&gt;Runtime Parameters&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.bbritten.com/softwares/niente/nenchange&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:nenchange&quot; data-wiki-id=&quot;softwares:niente:nenchange&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;User Manual Index&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;user_manual_index&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;52-735&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;what_is_niente&quot;&gt;1.0 What is Niente?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Niente is a &lt;strong&gt;FLAC integrity checker&lt;/strong&gt; for Linux, Windows 10 &amp;amp; 11 and Raspberry Pi.
&lt;/p&gt;

&lt;p&gt;
You point it at a tree structure of folders full of FLACs and let it construct a database of what FLAC files exist. At any point after that initial folder scan, you can tell Niente to step through each file found in its database and analyse it for physical corruption and logical inconsistencies. After that, and at your leisure, you tell Niente to generate reports about the various sorts of corruption it has found.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/softwares/niente/physicalcorruption&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:physicalcorruption&quot; data-wiki-id=&quot;softwares:niente:physicalcorruption&quot;&gt;Physical corruption&lt;/a&gt; is perhaps the most serious issue (caused by bit-rot and hard disk corruption) and is detected because during every analysis run, Niente computes a digital &amp;#039;fingerprint&amp;#039; of the audio signal found in each file, storing the results in its database. Every subsequent analysis triggers the calculation of fresh audio fingerprints for each FLAC. Should the new fingerprint ever not match the previous one, you immediately know that some sort of physical corruption of the audio signal has taken place -at which point, you re-rip the original CD or revert to a known-good backup.
&lt;/p&gt;

&lt;p&gt;
In addition to checking for physical corruption or degradation in this way, Niente will scan for various types of &lt;a href=&quot;https://www.bbritten.com/softwares/niente/logicalcorruption&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:logicalcorruption&quot; data-wiki-id=&quot;softwares:niente:logicalcorruption&quot;&gt;logical corruption&lt;/a&gt; or inconsistencies, as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Is the YEAR (or DATE) tag completely empty?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If the YEAR tag contains data, is it consistent with what date is found in the ALBUM tag?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Is the PERFORMER tag completely empty?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If the PERFORMER tag contains data, does it match something found in the COMMENT tag?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Are there recordings which have under-sized (or non-square) embedded album art?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Are there recordings whose peak volume levels are significantly below what they could be (and thus could use a &amp;#039;volume boost&amp;#039;)?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Anything listed with these sorts of logical inconsistencies can be simply fixed up with a little bit of re-tagging or volume boosting (perhaps using my own &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;Semplice&lt;/a&gt; program!)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Crucially, &lt;strong&gt;Niente will only ever perform these checks in a manner that doesn&amp;#039;t alter the FLAC files themselves&lt;/strong&gt;: files are only ever &lt;em&gt;read from&lt;/em&gt;, never written to.
&lt;/p&gt;

&lt;p&gt;
A large music collection can take a long time to analyse fully (my own 16,000+ FLACs take about 24 hours to scan on a 7 year old laptop, for example). Fortunately, Niente helps in this regard by allowing you to do &amp;#039;partial analysis&amp;#039; as well as &amp;#039;full analysis&amp;#039;: partial runs only process the files which haven&amp;#039;t already been processed or which haven&amp;#039;t passed a previous analysis as being &amp;#039;clean&amp;#039;. An infrequent full analysis can then be scheduled infrequently (say, once a month or so) to analyse from scratch every music file in your collection. Niente also offers a much quicker &amp;#039;logical only&amp;#039; analysis, where it is allowed to perform its inter-tag consistency analysis without ever once worrying about whether your music files are physically corrupted: since it&amp;#039;s only doing half the work, this is a much faster check altogether.
&lt;/p&gt;

&lt;p&gt;
Though Niente can be run interactively using a simple-to-use menu interface, its file-scanning and integrity checking tasks can be automated as non-interactive, command line tasks: that time-consuming analysis of a large music collection can thus be scheduled to take place during the night or at other &amp;#039;off-peak&amp;#039; hours.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 What is Niente?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;what_is_niente&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;736-4098&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;the_name&quot;&gt;2.0 The Name&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you are a classical music fan, you will probably already know that the musical term &lt;em&gt;niente&lt;/em&gt; means “a gradual dying away of volume until …nothing” -and if you aren&amp;#039;t, then: now you know!
&lt;/p&gt;

&lt;p&gt;
The point of the name was to suggest that the ultimate goal for checking your FLACs for physical integrity and logical consistency is that you want a report that lists a bunch of zeroes: nothing in your music collection falls foul of the physical or logical tests. Additionally, the software itself should fade away from your notice until only a bare recollection of its existence is left: it&amp;#039;s ideally to be left to run as a background task that you pay no attention to, unless problems are detected. Otherwise, it should just disappear from view!
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/neninstall&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:neninstall&quot; data-wiki-id=&quot;softwares:niente:neninstall&quot;&gt;Installing Niente 4&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/quickstart&quot; class=&quot;wikilink2&quot; title=&quot;softwares:niente:quickstart&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;softwares:niente:quickstart&quot;&gt;Quick Start Guide&lt;/a&gt;&lt;/strong&gt; | [etc] | [etc] |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 The Name&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_name&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4099-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/e/ec2a6fd24225288c06942ac25063de81.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/niente/physicalcorruption">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-05T20:29:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>physicalcorruption</title>
        <link>https://www.bbritten.com/softwares/niente/physicalcorruption</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;physical_corruption&quot;&gt;Physical Corruption&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/beethoven-inspecting02.jpg?w=200&amp;amp;tok=2ad2cd&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Physical Corruption&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;physical_corruption&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-95&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;what_is_physical_corruption_aka_bit_rot&quot;&gt;1.0 What is Physical Corruption (aka Bit Rot)?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Computers store the data they need to process in RAM chips temporarily; and on hard disks (or solid state drives) more permanently. Every time your computer writes data to one of these forms of data storage, it can make a mistake. Even when it writes it correctly, the data at rest in any of these storage locations can change over time -the magnetic material of which a hard disk is made can physically degrade, for example; or a power-spike can affect the contents of data temporarily at rest on a RAM chip. Finally, even if your computer writes the data correctly; and even if it is stored immutably in or on its storage medium; the computer can mis-read the data when it next needs to access it: the charge levels of the electrons in solid state drive might have dropped below what can reliably be read, or the hard disk might simply mis-read a tiny magnetic 1 as a 0, given the enormous data densities and high speeds of modern hard disks.
&lt;/p&gt;

&lt;p&gt;
In short: whether the data degrades because of mechanical or material failures, or because power grids occasionally supply electricity at voltages and frequencies outside their normal range, or simply because (and it is has happened!) a cosmic ray happens to strike a storage device at the wrong time and in the wrong place …your digital data may not always remain in the state you want it to be in. That&amp;#039;s called &lt;em&gt;bit rot&lt;/em&gt; in the computer industry and for anyone listening to classical music stored in digital form, its practical consequences can range anywhere between “wouldn&amp;#039;t have known” and “glitching like old scratched CDs used to when they were having a fit”.
&lt;/p&gt;

&lt;p&gt;
Digital music collections, therefore, need protecting against bit rot. Niente has a part to play in &lt;em&gt;detecting&lt;/em&gt; bit rot if it happens, but it can never fix it if it finds it. Prevention is therefore miles better than the cure -and I thought I&amp;#039;d briefly discuss here how to prevent bit rot from happening in the first place.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 What is Physical Corruption (aka Bit Rot)?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;what_is_physical_corruption_aka_bit_rot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;96-2101&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;bit_rot_prevention_-_physical&quot;&gt;2.0 Bit Rot Prevention - Physical&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To prevent bit rot, as much as possible, you want to be using &lt;strong&gt;reliable computer kit in a controlled environment&lt;/strong&gt;. By this I mean, try not to stick your music storage devices in lofts that alternately freeze in Winter and cook in Summer (guilty as charged, though: sometimes you have no choice in such things!). Keep your computers in as dust-free an environment as you can possibly make it. If at all possible, run your computers from Uninterruptible Power Supplies (otherwise known as batteries!), as these will have current surge protections built-in: if your domestic electricity supply fails completely, a good UPS can shut your servers down gracefully, so they don&amp;#039;t just crash; and if your power supply is &amp;#039;dirty&amp;#039;, having lots of spikes and surges, the battery features of a UPS can smooth those fluctuations out. Incidentally, this is why an old laptop can make quite a good music server: the batteries that make laptops portable can also prove useful in cleaning up questionable power supplies. If your budget won&amp;#039;t spring for a full-featured UPS, at the very least invest in one of those multi-socket power extenders that provide some element of surge protection.
&lt;/p&gt;

&lt;p&gt;
Next on the prevention list: if at all possible, &lt;strong&gt;use ECC RAM&lt;/strong&gt; for your computer&amp;#039;s physical memory. ECC stands for &amp;#039;Error Correcting Code&amp;#039; and RAM that is ECC capable use nine chips rather than standard RAM&amp;#039;s eight. The extra chip is used to store “parity” data that can be used to reconstruct the &amp;#039;real&amp;#039; data, if part of it goes wrong. Imagine you wanted to store the numbers &amp;#039;2&amp;#039; and &amp;#039;3&amp;#039; in RAM: on conventional RAM, the 2 would be stored in one piece of RAM, the 3 in another. In ECC RAM, as well as storing the 2 and the 3, we also store a &amp;#039;1&amp;#039; on the extra parity chip. Why? Because if a cosmic ray wiped out the 2, but left the 3, I could take the 3, minus the 1, and reconstruct the 2: I get 3 and 2 back again. Or, if I lost the 3, I could take the 2 and add the 1, reconstructing the 3. That explanation is embarrassingly simplified, I hasten to add! But the principle is true: if I construct &amp;#039;extra&amp;#039; data from the data you actually want to store, I can later use that extra data to &lt;em&gt;reconstruct&lt;/em&gt; any real data that happens to go missing or get corrupted. ECC memory, therefore, helps prevents bit rot happening whilst data is temporarily at rest in your computer&amp;#039;s working memory. Technically, ECC RAM can detect and correct &amp;#039;single bit memory errors&amp;#039;, thereby preventing already-corrupted-in-memory data from being written to disk.
&lt;/p&gt;

&lt;p&gt;
ECC RAM is slightly more expensive than ordinary RAM and not every CPU or motherboard can use it. In particular, Intel is notorious for actively preventing their consumer CPUs (things like i7, i5 and i3 chips, for example) from making use of it, though AMD&amp;#039;s Ryzen chips are frequently said to be able to use it effectively, even when AMD don&amp;#039;t officially endorse its use. Intel server and workstation chips (so, Xeons) usually do support the use of ECC RAM -and I would therefore encourage you to buy computer hardware which uses Xeons or Ryzen chips to use for your digital music storage server(s). An old server that uses a 2011-ish vintage Xeon can be purchased very cheaply these days:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_144257.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_144257.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_144257.png?w=600&amp;amp;tok=9d7560&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The Xeon E5-2407 was released in 2012, so we are talking pretty ancient by now… but it has more than enough power to run a storage server and it supports the use of ECC memory, so will physically help keep your music in pristine, non-rotting fashion! If your preferred storage server is a more modern, prebuilt device like a QNAP or a Synology NAS, be aware that the 2- and 4-disk consumer appliances tend not to support ECC RAM, but the higher-end 8-disk units do. Shop around and prefer ECC-capable models, if you and your wallet can stretch to it, anyway.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 Bit Rot Prevention - Physical&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bit_rot_prevention_-_physical&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2102-5991&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;bit_rot_prevention_-_software&quot;&gt;3.0 Bit Rot Prevention - Software&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you are not a computer-ese guru, the next bit of bit-rot prevention advice is likely to sound like complete gobbledygook, I realise. I can only urge you to try to get on top of this particular subject matter, however, because the longevity of your music collection really depends on it!
&lt;/p&gt;

&lt;p&gt;
ECC RAM will help ensure that what your computer writes to disk is in good order. Once it has been written to disk (or SSD), though, it can degrade over time, for the reasons outlined previously -and ECC RAM cannot help you detect that. Similarly, pristine data that sits on a hard disk which simply and completely mechanically fails is pristinely lost: no amount of ECC RAM is going to be able to walk you back from that particular form of catastrophe!
&lt;/p&gt;

&lt;p&gt;
What you need, therefore, is &lt;strong&gt;a bit-rot-detecting file system&lt;/strong&gt; that your operating system can rely on to do hard disk bit-rot detection and hard disk failure recovery. For Linux and *BSD users, this is not a difficult requirement to meet: the &lt;strong&gt;ZFS&lt;/strong&gt; file system has built-in bit-rot and hard disk failure detection and healing capabilities when used in a multi-disk storage array and it will work fine on Linux, even though its licence is technically incompatible with Linux&amp;#039;s own GPLv2. An alternative to ZFS is Btrfs, whose licence is fully compatible with Linux&amp;#039;s, but whose tendency to lose data in certain multi-disk setups means I can&amp;#039;t recommend it. Plenty of people do use it for its bit-rot protection, nonetheless.
&lt;/p&gt;

&lt;p&gt;
The underlying principle of ZFS is that it does to data on a file system what ECC memory does to RAM chips: it writes extra data that it can use to re-construct data it detects to have been corrupted or lost. Using the previous example: I write 2 and 3 to the hard disk; ZFS writes a 1 on another part of the storage array. If a cosmic ray strikes the hard disk platter and alters the 3 into being a 9, then ZFS will be able to detect the error, since the surviving 2, plus the extra 1, doesn&amp;#039;t equal the 9 also found on the hard disk. Having detected the error, ZFS can then correct it, because it knows that the 9 should actually be equal to 2+1, and therefore can over-write it with a replacement for the lost 3. To get this sort of error detection and correction going, you simply schedule regular &amp;#039;scrubs&amp;#039; of your ZFS storage &amp;#039;pools&amp;#039;.
&lt;/p&gt;

&lt;p&gt;
I won&amp;#039;t go into too much more detail about all this here, other than to summarise by saying: you should store your digital music collection on a ZFS file system that writes to at least 2 physical hard disks, preferably 4. Personally, I use a zpool which is configured as a &amp;#039;mirrored stripe&amp;#039;: that is, I put two hard disks into a state where one mirrors the contents of the other. If one disk fails, a good copy of the data is still available from the surviving disk. Two more hard disks are then put into a second mirror, with the same result. Finally, both mirrors are put into a single &amp;#039;stripe&amp;#039;, so that a chunk of data is written not to one or the other, but to both mirror pairs, spread out across them. The net result is that I can have two hard disks mechanically fail -and still be able to recover all my data. The cost is that if my storage array uses four 4TB hard disks (so, 16TB raw storage in all), I end up creating two 4TB mirrors and then striping across both… meaning that I&amp;#039;ve only got 8TB of usable storage, not 16TB. Effectively, I lose two hard disks to &amp;#039;data redundancy&amp;#039;: two disks are effectively there to protect your data, rather than store it by themselves.
&lt;/p&gt;

&lt;p&gt;
There is another &amp;#039;cost&amp;#039; to this approach, however: you will have to not use Windows on your storage server, because ZFS does not yet reliably work on Windows (though development efforts continue) and Windows itself has no equivalent &amp;#039;self-healing&amp;#039; file system. Technically, the ReFS file system was supposed to be usable in this sort of way, but Microsoft has mucked about with it since it was first released in such a way as to make it look like abandonware at this stage. I wouldn&amp;#039;t want to store anything I care about on an ReFS file system, anyway! Whilst it&amp;#039;s only your storage server that needs to be running Linux or *BSD, leaving your PC free to continue to enjoy the delights of Windows 11, it does mean you need to learn how to set up a Linux or *BSD server of some sort. A relatively simple way to dip your toes in those waters is to experiment with setting up a &lt;a href=&quot;https://www.truenas.com/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.truenas.com/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;TrueNAS&lt;/a&gt; or &lt;a href=&quot;https://www.openmediavault.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.openmediavault.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;OpenMediaVault&lt;/a&gt; server (both involve installing an operating system which is more of a &amp;#039;software appliance&amp;#039;, making things quite easy to administer: both are completely free of charge to obtain and use, too).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 Bit Rot Prevention - Software&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bit_rot_prevention_-_software&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5992-10698&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;bit_rot_prevention_-_duplication_and_backup&quot;&gt;4.0 Bit Rot Prevention - Duplication and Backup&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In my (all too brief and over-simplified) explanation of ZFS, I explained how my own personal music server can survive the loss (or corruption) of two hard disks. This is true: but it won&amp;#039;t help if I suffer corruption or loss on &lt;em&gt;three&lt;/em&gt; of my four hard disks! In other words, whilst ZFS is a powerful way of detecting and fixing limited data corruption and loss, it can&amp;#039;t fix everything.
&lt;/p&gt;

&lt;p&gt;
For that sort of capability, you need to make whole copies of your data, from your &amp;#039;true server&amp;#039; to a duplicate server.
&lt;/p&gt;

&lt;p&gt;
In my own setup, for example, I have a 4-disk server running ZFS duplicating to another 4-disk server, also running ZFS. If one server bites the dust, my music collection remains safe on the other. ZFS has a duplicating capability built-in, so no other software is really required. However, I choose to script my duplication runs using rsync software -other products are available which can achieve the same sort of results. The details of &lt;em&gt;how&lt;/em&gt; you duplicate your music collection are not as important as the fact that you &lt;em&gt;should&lt;/em&gt; duplicate it.
&lt;/p&gt;

&lt;p&gt;
As it happens, I&amp;#039;d go one step further and recommend a third duplicate onto a third server. My third server only runs 4x2TB hard disks in a stripe: if I lose a single hard disk, I lose the entire array. So it&amp;#039;s not a robust duplicate, but it&amp;#039;s there as a fallback of last resort. Two other servers have to suffer fairly catastrophic failures before I need to rely on this third duplicate one, so it&amp;#039;s a risk I&amp;#039;m prepared to take (and which my wallet wasn&amp;#039;t prepared to properly mitigate!)
&lt;/p&gt;

&lt;p&gt;
Finally, follow the 3-2-1 rule. That is, have (at least) three copies of your data; two of them on-site, but on different physical media; one of them off-site. I certainly meet the first two of those requirements: I have the &amp;#039;source&amp;#039; music collection, a duplicate copy on a second server, and a third copy on a slightly-risky third server. So, I have two backups, plus the originals, at home, on different disks and different disk configurations. However, if my house burns down, it takes all three sets of my music with it, resulting in me having no more music! To meet the &amp;#039;1&amp;#039; part of the 3-2-1 rule, therefore, I continually backup my third server to &amp;#039;The Cloud&amp;#039;, in the form of a cheap, unlimited data plan with &lt;a href=&quot;https://www.backblaze.com/backup-pricing.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.backblaze.com/backup-pricing.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Backblaze&lt;/a&gt;. For US$99 a year (at the time of writing in 2025), I can store as much data with them as I need to, on the other side of the world, which should come in handy should my house ever be destroyed by flood, fire or hurricane. Should I need my data restored from them at any point, they will ship it to you on a hard disk, which you can return to them once you&amp;#039;ve copied it onto your own storage …and thus not pay for.
&lt;/p&gt;

&lt;p&gt;
One drawback with Backblaze&amp;#039;s &amp;#039;personal&amp;#039; plans is: they only work when the source of the data is a Windows PC. So, I have a fourth computer in my loft, pulling data from my third server, running Windows 10. If the prospect of running Windows fills you with as much dread as it did me, you could always spring for one of Backblaze&amp;#039;s more &amp;#039;professional&amp;#039; products: their &lt;a href=&quot;https://www.backblaze.com/cloud-storage/pricing&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.backblaze.com/cloud-storage/pricing&quot; rel=&quot;ugc nofollow noopener&quot;&gt;&amp;#039;B2 Cloud Storage&amp;#039;&lt;/a&gt; product appears to cost $6 per TB per month at the time of writing, for example, and permits backups from anything that can &lt;a href=&quot;https://www.backblaze.com/docs/cloud-storage-back-up-linux-to-backblaze-b2&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.backblaze.com/docs/cloud-storage-back-up-linux-to-backblaze-b2&quot; rel=&quot;ugc nofollow noopener&quot;&gt;run the right client tools&lt;/a&gt;, including Linux boxes.
&lt;/p&gt;

&lt;p&gt;
If the cost of backups in the cloud puts you off, then at least spring for a USB hard drive onto which you take periodic backups -and then store that hard drive with a trusted neighbour or relative.
&lt;/p&gt;

&lt;p&gt;
One final but related point to mention here, though it possibly descends to the depths of complete data paranoia: I have a fourth server in the house which I only power on the first day of each month, and which then pulls an exact copy of the data from the third server before immediately shutting itself down. The reason for yet another in-house copy of the data is that it&amp;#039;s offline for most of the time, whereas the other three servers (plus the Windows PC) are permanently running. If my other half&amp;#039;s resolutely Windows PC was ever to pick up a piece of crypto ransomware, for example, then it&amp;#039;s possible that would start encrypting data right across the home network -including on all three storage servers. No cryptoware can damage data that&amp;#039;s not accessible because its host server is powered off, though! That USB drive you trusted your neighbour to store for you? That counts as offline storage, too, as well as being off-site… so do that sort of thing, too!🙂
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.0 Bit Rot Prevention - Duplication and Backup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bit_rot_prevention_-_duplication_and_backup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;10699-15375&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;niente_s_purpose&quot;&gt;5.0 Niente&amp;#039;s Purpose&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Summing up so far, therefore: if you run your storage hardware in clean, controlled conditions; if you provide a relatively stable and clean power supply to it; if you use ECC RAM to prevent bit-flips in memory; if you use the ZFS file system across multiple hard disks; if you duplicate your data onto separate storage, also configured with ZFS across multiple hard disks; if you ensure that you copy your data off-site, at least periodically; and if you finally ensure that at least one copy of your data is not permanently accessible over your home network… then you are unlikely ever to suffer from bit rot, corruption, data losses caused by hard disk failures and so on.
&lt;/p&gt;

&lt;p&gt;
In which case, the question arises: what&amp;#039;s the point of Niente, then?!
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll answer that in two ways. First, and most simply, Niente doesn&amp;#039;t just check for the presence of physical corruption. It does logical inconsistency checking too, so it does things which ECC RAM, ZFS file systems and a thousand backups could never detect or resolve! ZFS is not going to know that if &amp;#039;Fred Smith&amp;#039; is listed as the performer on a recording, he ought to be listed in the COMMENT tag, too, for example. 
&lt;/p&gt;

&lt;p&gt;
But the second part of my answer is that FLACs are written by software and that software can itself go wrong over time. A FLAC could degrade internally, for example, by you re-tagging the list of performers stored in the COMMENT tag. The software used to do that tagging might not be entirely clean in the way it writes back to the FLAC, and might cause internal corruption to the audio signal it contains which wouldn&amp;#039;t appear to count as physical &amp;#039;bit rot&amp;#039; from the point of view of ZFS or ECC RAM. It&amp;#039;s not &lt;em&gt;supposed&lt;/em&gt; to do that, of course… but software can contain bugs, so what&amp;#039;s supposed to happen and what actually happens can quite often be two different things!
&lt;/p&gt;

&lt;p&gt;
If you are doing everything &amp;#039;right&amp;#039; as far as computer memory, robust file systems and multiple copies and backups of your data… there is nevertheless purpose in periodically running a Niente integrity check against your music collection, in order to detect such &amp;#039;software errors&amp;#039; and to give you a chance to correct them (by restoring good copies of the affected files from all those duplicate and backup copies, of course!).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5.0 Niente&amp;#039;s Purpose&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_s_purpose&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;15376-17685&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;niente_s_functionality&quot;&gt;6.0 Niente&amp;#039;s Functionality&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6.0 Niente&amp;#039;s Functionality&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;niente_s_functionality&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;17686-17724&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;general_principles&quot;&gt;6.1 General Principles&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
In case you haven&amp;#039;t met this particular aspect of computing before, let&amp;#039;s start axiomatically: it is possible to apply a mathematical function to any piece of data and thereby derive a single, unique &amp;#039;hash value&amp;#039; for that data. The hash value cannot (usually) be converted back into the data itself, but the same data subject to the same mathematical function at a later date should return the same hash value, so that there is a one-to-one correspondence between the data and its hash value.
&lt;/p&gt;

&lt;p&gt;
By way of example, let&amp;#039;s take the phrase “This is some data!” and pass it through a particular mathematical function to generate what&amp;#039;s called the MD5 hash. This is easy to do on most operating systems, at the command line:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_162912.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_162912.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_162912.png?w=650&amp;amp;tok=4f30d7&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here we see that the phrase &amp;#039;encodes&amp;#039; to a long string of letters and digits, starting “e914b8466…”. If I ask for a new MD5 hash for that same data, I should always get the same result:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163032.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_163032.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163032.png?w=650&amp;amp;tok=f206e3&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
A key feature of the MD5 hash function, however, is that if you change the input data by even a tiny amount, the resulting hash will likely be wildly different from the original:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163154.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_163154.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163154.png?w=650&amp;amp;tok=c3ac6d&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, you see me remove the final exclamation mark from the input phrase. So the phrase is now just one character different from before… but the resulting MD5 hash is nowhere close to the original. Now it starts “4b4cbba68adce2d…” and is therefore detectably different from the original hash in almost every place.
&lt;/p&gt;

&lt;p&gt;
Hashes don&amp;#039;t just have to be generated from text strings, though: any data can be fed to the MD5 hashing function and return an MD5 hash, including FLAC files:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163520.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_163520.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163520.png?w=650&amp;amp;tok=023a48&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here, you see me first checking that a FLAC exists in my Desktop folder and then passing that entire FLAC through the MD5 function, to once more return a simple hash value, this time one beginning &amp;#039;e97d…&amp;#039;. Were I to change one bit &lt;em&gt;within&lt;/em&gt; that FLAC, the entire hash value would change. Let me demonstrate that for you now.
&lt;/p&gt;

&lt;p&gt;
First, I&amp;#039;ll open that same FLAC file in a hexadecimal editor (that&amp;#039;s just an editor which can alter the contents of &lt;em&gt;binary&lt;/em&gt; files, just as Word or Notepad can alter the contents of text files):
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163856.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_163856.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_163856.png?w=650&amp;amp;tok=e31cbd&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Being binary data, it looks complete gibberish, of course. Let me alter one small piece of this data, though:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_164141.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_164141.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_164141.png?w=650&amp;amp;tok=d9c86c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
If you compare that screenshot to the previous one, you&amp;#039;ll notice only a single change to the binary data: a “4F” has become a “6F” on line 00000168. In plain English, that weird technical change has changed the word &amp;#039;PERFORMER=&amp;#039; to &amp;#039;PERFoRMER=&amp;#039;. A tiny change, therefore. So now let&amp;#039;s see what that one change has made to the MD5 hash value for this FLAC file:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_164326.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_164326.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_164326.png?w=650&amp;amp;tok=7c41a9&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Now we are getting “4ac0c7c0c78ce0a83430bf36ce8fd92f” where before we had “e97d860551bc33ab9e7009259ecf69d0”: one tiny change in the source data results in a huge change in the MD5 hash value, therefore.
&lt;/p&gt;

&lt;p&gt;
We can work this in reverse, too, of course: if we keep getting the same MD5 hash as we got before, we can conclude with absolute certainty that no alteration to the underlying data can possibly have taken place. But if we ever see a change in the MD5 hash value, we know with equal certainty that, to one extent or another, the data we now have is not the same data we had originally. This is the underlying principle of the way Niente performs a physical integrity check of your FLAC files. Every time you ask it to perform a full or differential integrity check, Niente computes a new MD5 hash value for the FLAC files it&amp;#039;s interested in and stores it in its database. It can then compare that new MD5 hash value to the one it had before: if they are different, the FLAC file has changed internally (for whatever reason, and to whatever extent, Niente cannot know) and that needs looking into.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6.1 General Principles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;general_principles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;17725-21899&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;nuances&quot;&gt;6.2 Nuances&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I pause at this point to explain a subtlety: a FLAC file contains more than just music! The FLAC can (and &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;should&lt;/a&gt;, in my view) contain embedded album artwork, various metadata tag information telling us who the composer is, who is performing and what they&amp;#039;re performing, for example. This tag data is usually supplied by you, typing it in (using a tool such as &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;Semplice&lt;/a&gt;)… and with the best will in the world, you&amp;#039;re going to make mistakes from time to time when typing it in. You&amp;#039;ll therefore want to go back and correct such tag-typos… and at that point, you&amp;#039;ll be modifying the internal contents of the FLAC file as a whole.
&lt;/p&gt;

&lt;p&gt;
If Niente did what I just did in Section 6.1 above and calculated an MD5 hash value for the &lt;em&gt;entire&lt;/em&gt; FLAC as a whole, therefore, all such tag amendments would trigger a change in the hash value… and Niente would forever be declaring the file potentially corrupt, despite the change being perfectly legitimate.
&lt;/p&gt;

&lt;p&gt;
Fortunately, FLAC files store their internal bits and pieces in distinct &amp;#039;blocks&amp;#039;. Album art is stored within a picture block, for example; tag data is stored within multiple &amp;#039;vorbis comment&amp;#039; data blocks. Crucially, the audio bit of a FLAC (the bit we &lt;em&gt;really&lt;/em&gt; care about, I suppose!) is stored within its own &amp;#039;stream block&amp;#039;. Niente therefore applies the MD5 hash algorithm only to &lt;strong&gt;&lt;em&gt;the audio stream part of the file&lt;/em&gt;&lt;/strong&gt;. You can therefore modify metadata tags and add and remove album artwork until the cows come home -and Niente will not regard any such changes as being a sign of internal corruption. Only if the audio data part of the FLAC changes will the MD5 hash value change -and that can only happen if some sort of &amp;#039;bit rot&amp;#039; is affecting that part of the file inappropriately (as might occur if, for example, a tagging program you use doesn&amp;#039;t understand how to write back to FLACs properly).
&lt;/p&gt;

&lt;p&gt;
Another subtlety I&amp;#039;ll mention at this point is that when any FLAC file is first created, an MD5 hash value is computed for the audio stream component of the file and stored within the file itself, entirely automatically and without your knowledge or express permission. All FLAC encoders that meet the FLAC specifications should do this. This means that there&amp;#039;s an MD5 hash we can compare to from the moment a FLAC file is created. You can see this &amp;#039;native&amp;#039; MD5 hash by exposing it using the &lt;strong&gt;metaflac&lt;/strong&gt; tool (that&amp;#039;s included whenever you install the FLAC encoding/decoding software):
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_170514.png&quot; class=&quot;media&quot; title=&quot;software:niente:screenshot_20230216_170514.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/niente/screenshot_20230216_170514.png?w=600&amp;amp;tok=ca2e8e&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
In this screenshot, we see I have a new FLAC file. I first use metaflac to expose its &amp;#039;internal, original MD5&amp;#039; hash value: metaflac returns a value of &lt;strong&gt;a476c66b3f4d9b2273b403ca1e90e120&lt;/strong&gt;. I then use the md5sum program to compute my own MD5: I get aa14fca10894ce55e91ea186993aa54f. Oh no: they&amp;#039;re different! But, hang on… we expect them to be different: metaflac&amp;#039;s result is the MD5 hash for only the audio component of the file. The value being returned by the md5sum program is the &amp;#039;fingerprint&amp;#039; of that audio signal plus all the metadata and album art. They are naturally and inevitably not the same data, so the hashes won&amp;#039;t agree.
&lt;/p&gt;

&lt;p&gt;
Fortunately, Niente is fully aware of this. It certainly reads the &amp;#039;internal, original MD5&amp;#039; that was embedded within the FLAC at the moment of its creation. When it computes a new MD5 hash value, however, it does so by using methods which are a good deal subtler than what md5sum is capable of! It thus computes the audio-only MD5 hash value, which can legitimately be compared to the &amp;#039;birth MD5&amp;#039; value.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6.2 Nuances&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nuances&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;21900-25518&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;when_are_new_hashes_computed&quot;&gt;6.3 When are new hashes computed?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Once you run Niente for the first time, you are probably first going to take the &lt;strong&gt;Database&lt;/strong&gt; menu, &lt;strong&gt;1: Create a music database&lt;/strong&gt; option. This will trigger Niente to create a brand new database (the name of which is prompted for, or read from the persistent configuration file). Creating a database &lt;em&gt;structure&lt;/em&gt; is a matter of mere tenths of a second however: it takes practically no time at all, because the database immediately after creation contains no actual usable data at all. So that option automatically and without further involvement from you immediately goes on to run off to your PC&amp;#039;s hard disk (the specific location is again defined in the persistent configuration file) to scan it for any FLAC files that are stored there. If it finds any, it records details of their path and filename inside its database. Niente at that point therefore knows what FLAC files exist …but it &lt;strong&gt;does not&lt;/strong&gt; compute nor create &lt;em&gt;any&lt;/em&gt; MD5 hash information (or indeed any other internal information) about those FLACs at this stage.
&lt;/p&gt;

&lt;p&gt;
Only when you take the &lt;strong&gt;Integrity Checks&lt;/strong&gt; menu, &lt;strong&gt;Options 1, 2&lt;/strong&gt; or &lt;strong&gt;3&lt;/strong&gt; does Niente set to work to &lt;em&gt;read&lt;/em&gt; the FLACs it knows about and derive information from them. Option 3 is called a &amp;#039;fast&amp;#039; integrity check because it doesn&amp;#039;t spend its time computing MD5 hashes at all, though: its job is to determine the logical consistency of the FLAC files&amp;#039; internal metadata tags. So, only Options 1 and 2 will actually compute fresh MD5 hashes for each FLAC known about. Option 1 computes it for every single FLAC in the database; Option 2 computes it only for those FLACs which, from previous checks, are known to &lt;em&gt;have had&lt;/em&gt; logical or physical integrity issues, or which don&amp;#039;t appear to have ever had MD5 hashes computed beforehand (meaning, this FLAC has only just been added to the database). If a previous full check told you a file was physically corrupt, for example, you might restore it from a backup; you&amp;#039;d then run a differential check to have that one replacement FLAC re-checked in moments, rather than re-work your entire music collection for hours on end.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6.3 When are new hashes computed?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;when_are_new_hashes_computed&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;25519-27665&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;conclusion&quot;&gt;7.0 Conclusion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In this article, I hope to have at least hinted at the need for &amp;#039;defence in depth&amp;#039; when it comes to protecting a digital music collection from catastrophic, physical corruption. It starts with running your servers in clean conditions, with clean power supplies. It extends to using proper server-grade machines which can make use of ECC memory. It also involves storing your music on multiple multi-disk arrays using a bit rot-proof file system, such as ZFS -rather than bunging it on a single USB drive using NTFS and hoping for the best!
&lt;/p&gt;

&lt;p&gt;
If your hardware foundations are sound, then &lt;em&gt;most&lt;/em&gt; of Niente&amp;#039;s functionality regarding the detection of unexpected physical alteration of the audio stream in your FLAC files is rendered a bit redundant. But not everyone will be using ECC RAM; Windows users may not want to be messing around with Linux and ZFS; software meant to help you tag your FLACs might end up accidentally messing with the audio stream itself because of bugs… and so, even in an ideal hardware and filesystem environment, there is &lt;em&gt;still&lt;/em&gt; a purpose to scheduling nightly Niente &lt;strong&gt;differential&lt;/strong&gt; integrity checks and monthly (or maybe fortnightly: it depends on your backup strategy and the size of your music collection, really) &lt;strong&gt;full&lt;/strong&gt; integrity checks.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/niente/niente&quot; class=&quot;wikilink1&quot; title=&quot;softwares:niente:niente&quot; data-wiki-id=&quot;softwares:niente:niente&quot;&gt;Back to Niente Documentation Home&lt;/a&gt;&lt;/strong&gt; |
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;7.0 Conclusion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conclusion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;27666-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/0/0fcce5581566ddef9797095307d63f54.xhtml used --&gt;
</description>
    </item>
</rdf:RDF>
