Skip to content

Releases: ewauq/AudioIntegrityChecker

v1.7.0

03 May 11:37
2e237ba

Choose a tag to compare

What's new

  • A real "Analysis complete" window. When a scan finishes, you no longer get a small popup. You get a resizable window with everything in one place:
    • A status banner at the top showing how long the scan took, how many files were checked, and a breakdown of issues found.
    • A sortable list of every file with a problem, with columns for severity, file name, format, and a short description of what went wrong.
    • Double-click any row to jump straight to the file in Windows Explorer.
    • The Windows notification sound you are used to is still there. You will hear the info, warning, or error chime depending on what the scan found.

Export

  • A new Export button lets you save the scan report in three formats:
    • Plain text, for quick reading or pasting into an email.
    • CSV, which opens cleanly in Excel or any spreadsheet app.
    • HTML, color-coded and ready to print or share with someone else.
  • You can choose to export only the files with issues, or every file that was scanned including the ones that passed.
  • The format and scope you picked last time are remembered, so you do not have to set them again on the next export.

Bug fixes

  • Your library folders and worker thread settings from the Options window are no longer reset to defaults when you close the application.

v1.6.9

01 May 13:32
6ad5dc2

Choose a tag to compare

What's new

  • Redesigned toolbar and menu bar with icons and keyboard shortcuts (Ctrl+O to open files, Ctrl+Shift+O for folders, F5 to scan, Esc to cancel, and more).
  • Help menu with About and View on GitHub, plus a new shortcuts dialog accessible via Shift+F1 that lists every binding in a clean table.
  • Reworked Options dialog with tabs for Performance and Libraries, fully DPI-aware and resizable.
  • You can now point the app at your own copy of libFLAC.dll and mpg123.dll from Options > Libraries. Each entry shows live status (Found, Missing, or Error) and is validated by checking the actual functions exported by the file, not just whether the file exists.
  • New application icon.

MP3 and FLAC accuracy

  • FLAC files with an ID3 tag appended at the end are no longer flagged as mid-stream corruption. They are correctly reported as trailing extra data.
  • MP3 detection has been reworked to remove a long-standing false positive: the LAME encoder tag check was producing errors on virtually every file produced by LAME, and has been removed.
  • Better handling of trailing ID3v1 tags, junk bytes between frames, and Xing/Info headers in MP3 files. Decoding errors now point to the exact frame that failed.

Stability and accessibility

  • Files larger than 2 GB are rejected up front with a clear message instead of failing deep in the pipeline.
  • Saved settings recover gracefully when the registry entry is corrupted.
  • Status bar and progress indicators are now exposed to screen readers.
  • All dialogs scale correctly on high-DPI displays.
  • Sub-second scan durations are shown in milliseconds.

Other improvements

Numerous fixes around UI exception safety, GDI resource cleanup, toolbar icon handling, the Clear list confirmation prompt, and behaviour during cancellation. Updating native library paths now takes effect at the next startup, and a library once loaded stays loaded for the session.

v1.3.0

17 Apr 17:27
bb7f9d8

Choose a tag to compare

What's new

Hardware-aware scanning pipeline

The analysis pipeline now picks an I/O strategy based on the physical disk backing each scan:

  • SSD / NVMe: memory-mapped views — zero managed copy, no Gen2 GC pressure on large files
  • Homogeneous HDD: a dedicated sequential reader pushes files into a bounded channel while workers decode pre-loaded buffers, so the drive head seeks monotonically
  • Mixed scans: direct strategy with per-worker buffer loading

Options dialog

New ToolsOptions… menu item opens a modal with a worker-count control (automatic or manual, 1..ProcessorCount). Persisted in the Windows registry.

Automatic worker count

Automatic mode adapts to the detected storage:

  • HDD → ProcessorCount
  • SATA SSD → min(ProcessorCount, 8)
  • NVMe → ProcessorCount

Storage indicator

Status bar now shows the physical disk behind the queue — friendly name, media type, bus, and size (e.g. WD Elements 2620 HDD (USB 3) 5 TB). Partial info is kept when only the bus or friendly name is resolvable.

Parallel file collection

Root paths on distinct physical disks are walked in parallel. Intra-disk walking stays sequential to avoid HDD head thrashing. HDD groups are sorted by path after collection so the analysis phase follows MFT allocation order.

New app icon

The music-note icon has been replaced with a checkmark design on the same blue document shape, reflecting the verification focus of the tool.

Performance

  • Memory-mapped I/O on SSD / NVMe scans eliminates the managed copy of each file — a 300 MB FLAC costs zero managed heap pressure.
  • The HDD sequential reader typically doubles to triples throughput on large HDD scans (no more concurrent reads thrashing the head).
  • NTFS kernel-side extension filtering via per-pattern FindFirstFileEx with a 64 KB buffer.
  • libFLAC P/Invoke delegates hoisted to static readonly (no per-file delegate allocation).
  • mpg123 decode output buffer rented from ArrayPool<byte>.
  • Dropped the post-collect duration prefetch — saved 5–10s on 500-file HDD scans.
  • PublishReadyToRun + TieredPGO enabled.

Fixes

Phantom TRAILING_GARBAGE on mmap-backed scans

Memory-mapped FLAC and MP3 scans on SSD / NVMe were reporting a spurious TRAILING_GARBAGE warning at the end of every file. MemoryMappedViewAccessor.Capacity is rounded up to the OS page size (4 KB on Windows), so a 166,667,738-byte file appeared as 166,670,336 bytes to the checker. The 2,598 extra bytes read as zeros, and libFLAC treated them as invalid frame data past the declared sample count. File contents were never affected — only the length the checker saw through FileBuffer. Fixed by capturing the real file size via FileInfo.Length before creating the view.

Breaking UI notes

  • The Options dialog no longer exposes custom libFLAC / mpg123 DLL paths. libFLAC is bundled with the app; mpg123 remains optional and is discovered automatically.
  • Worker-count changes now apply at the next scan (previously propagated live to a running scan).

Assets

  • AudioIntegrityChecker.exe — single-file executable (framework-dependent, .NET 8 desktop runtime required)
  • libFLAC.dll — FLAC decoder
  • mpg123.dll — MP3 decoder

v1.2.0

09 Apr 22:12
bd8394f

Choose a tag to compare

What's new

Pause / Resume

The Start button now cycles through three states during analysis: PauseWaiting (N)... (in-flight files finish) → PausedResume. Cancelling from a paused state works correctly.

Progress bar text

The progress bar now shows a live text overlay:

Progression: 42% - 374/888 files - Elapsed time: 00:01:47 - Remaining time: 00:02:23

While paused: Paused - 42% - 374/888 files - Elapsed time: 00:01:47. The bar turns grey when analysis is fully paused.

Scan-time durations

File durations are now estimated from a small header read (42 bytes for FLAC, 10 KB for MP3) immediately after scanning a folder, before analysis starts. The Duration column fills in progressively as files are scanned.

Improved ETA

The remaining time estimate now uses a priority chain for better accuracy:

  1. Audio-duration throughput rate (most accurate on large collections)
  2. Bytes-per-second rate
  3. File-count rate (fallback)

Commits since v1.1.7

  • Add Pause/Resume with in-flight feedback on Start button
  • Add text overlay on progress bar with elapsed/ETA display
  • Read file durations from headers at scan time (background)
  • Improve ETA with audio-duration and bytes-rate priority chain

v1.1.6

07 Apr 22:51
0d79d3e

Choose a tag to compare

What's Changed

Performance: scan phase is now dramatically faster on HDDs.

  • Per-file duration extraction moved from FileCollector into the checkers — files are no longer opened a second time during scan just to read metadata. Each file is opened once, during analysis, on the buffer the checker has already loaded.
  • IFormatChecker.Check now returns CheckOutcome(CheckResult, TimeSpan?); the duration flows through FileCompletedEventArgs to the UI.
  • Duration column and total duration are populated progressively as analysis runs, instead of eagerly at scan time.

Full Changelog: v1.1.5...v1.1.6

Audio Integrity Checker - v1.1.5

04 Apr 10:54
f8376de

Choose a tag to compare

What's Changed

  • Implement help panel

Full Changelog: v1.10...v1.1.5

Audio Integrity Checker - v1.1.0

31 Mar 07:20
0ba2f1c

Choose a tag to compare

What's Changed

  • Add mp3 support in #1
  • Updated UI

Full Changelog: v1.0.0...v1.10

Audio Integrity Checker - v1.0.0

29 Mar 21:56
b35cf95

Choose a tag to compare

First Release. Supports FLAC audio files only.