Skip to content

Releases: pbtechlab/pbAudioStats

v1.3.0 — Extreme Optimization + Correctness Fixes

Choose a tag to compare

@pbtechlab pbtechlab released this 12 Jun 07:37

pbAudioStats v1.3.0 — Extreme Optimization + Correctness Fixes

CLI build for Windows x64 (requires AVX2/FMA — Intel Haswell 2013+ / AMD Excavator 2015+).

All measurements verified bit-stable against EBU Tech 3341/3342 theoretical values and cross-checked against ffmpeg ebur128. Golden comparison vs v1.2.0 passes. Built and validated on Windows x64 (AVX2) and macOS ARM64 (NEON).

Performance (vs v1.2.0, best of 3, Intel Ultra 9 185H)

Scenario Speedup
Batch analysis (80 files) 6.9×
Normalize (10-min 24-bit) 3.8×
MP3 analysis (10-min) 1.85×
In-memory analysis (total) 2.68×
└ True-peak stage 4.2×
  • True peak: streaming block-FIR with AVX2/NEON FMA kernels, rigorous L1-norm chunk pruning, end-of-stream flushing
  • Loudness/RMS fully chunk-batched; block aggregation O(1)/sample
  • Hardware FTZ/DAZ, all-core scheduling, memory-budgeted normalization, /fp:contract

Correctness fixes

  • 32-bit PCM writer no longer overflows full-scale +1.0 to INT32_MIN
  • Streaming path now computes the exact oversampled true peak (was sample peak)
  • WAVE_FORMAT_EXTENSIBLE WAV support
  • UTF-8 / Japanese filename support on Windows
  • Round-to-nearest PCM writes; robust WAV/AIFF header parsing
  • AVX2/FMA CPU capability guard (clean diagnostic instead of illegal-instruction crash)
  • MP3 output rejected instead of corrupting the input; quad/5.0/6.1/7.1 channel weights

Package contents

  • pbAudioStats.exe — CLI tool
  • pbAudioStatsLib.lib — static library
  • include/pbAudioStats.h, include/pbSimd.h — public headers
  • README.md, README_ja.md

See README for full usage.

v1.2.0 — accuracy + perf overhaul

Choose a tag to compare

@pbtechlab pbtechlab released this 01 May 18:57

Highlights

  • True Peak: ITU-R BS.1770-4 / EBU Tech 3341 準拠の 4x polyphase Kaiser-windowed sinc oversampling (48-tap, ~89 dB stopband) を新規実装。これまでは sample peak をそのまま返していました
  • Loudness 精度: bin 中心値補正・Neumaier 補償累積・LRA percentile を ceil ベースに・filter warmup ループで K-weighting の過渡応答を測定領域から排除・channel weight を 10^0.15 に厳密化・denormalize 閾値を 1e-15 → 1e-30
  • 重大 SIMD バグ修正: exp_smooth_batch_avx2 の IIR 直列再帰違反 (AVX2 ビルドで RMS が桁違いにずれていた)、_mm256_hadd_pd 4-lane 水平和の取り違え。すべての AVX2 経路を hsum_pd ヘルパに統一
  • パフォーマンス: normalize の load+analyze 二重ロード解消、解析を 1 パス化 (always measure_with_rms)、WAV/AIFF writer をバッファ化、load_wav/load_aiffWavStream/AiffStream 経由のチャンク読み込みに置換 (ピークメモリ約 1/2)
  • bit-depth 変換 SIMD 化: i16 / i24 / i32 LE/BE → float の AVX2 経路を追加。WavStream/AiffStream::read_frames が per-sample switch から simd::convert_* の一括 block デコードに置換 (約 3-8× 高速化)
  • CLI: -i + -norm-* の相互排他、-j<N> の例外捕捉、-norm-X:value 末尾文字検証、CSV 出力に UTF-8 BOM、Ctrl+C ハンドラ、largest-first スケジューリング、normalize 並列スレッドキャップ、エラー件数表示

Asset

pbAudioStats-1.2.0-win64.zip:

  • pbAudioStats.exe (CLI, 64-bit Windows / MSVC, /MT)
  • pbAudioStatsLib.lib (static library)
  • include/pbAudioStats.h, include/pbSimd.h
  • README.md, README_ja.md

Build requirements

  • Windows 10/11 64-bit / MSVC 2022
  • CMake 3.16+
  • AVX2-capable CPU (Haswell 2013 / Zen 2018 以降) を推奨。AVX2 が無くても scalar fallback で動作します

pbAudioStats v1.1.1 — Windows x64

Choose a tag to compare

@pbtechlab pbtechlab released this 01 May 18:16

pbAudioStats v1.1.1 — Initial Windows release

First public binary build of pbAudioStats for Windows x64.

Bundled

pbAudioStats-1.1.1-win-x64.zip contains:

  • pbAudioStats.exe — command-line analyzer / normalizer
  • lib/pbAudioStatsLib.lib — static library (MSVC, /MT)
  • include/pbAudioStats.h, include/pbSimd.h — public headers
  • README.md, README_ja.md

Build environment

  • Visual Studio 2022 (MSVC 19.44)
  • C++17, /O2, AVX2 enabled
  • Static MSVC runtime (/MT) — no extra DLLs required

Quick start

pbAudioStats -i -tp input.wav
pbAudioStats -norm-i:-23.0 input.wav output.wav

See README for the full option list.

Requirements

Windows 10 / 11 (64-bit).

License

Proprietary.