# iso532-1-rs

> Part of [LISQM](https://zhenxianli.github.io/LISQM/) (List of Implementations of Sound Quality Metrics), a list of open-source implementations of psychoacoustic metrics. Data as of 2026-10-28. Web page: https://zhenxianli.github.io/LISQM/projects/iso532-1-rs.html

**Newly released project.** First version tagged in July 2026. Not yet seen to be widely used in the community. Check its validation before relying on it.

Rust engine (README title "ISO532") for ISO 532-1:2017 Zwicker loudness: stationary, time-varying and a streaming interface, with a C ABI and a Python binding (PyO3/maturin). Only ISO 532-1 loudness is implemented.

- **Repository:** https://github.com/cclin99/iso532-1-rs
- **Language:** Rust, C, Python
- **Kind:** Library/Toolbox (Functions to call from your own code: a Python package, a MATLAB toolbox, or a C, C++, C#, Rust or Julia library.)
- **Group:** newly released (First released less than about a year ago, and not yet seen to be widely used in the community.)
- **Licence:** Apache-2.0
- **Latest release:** 0.1.0 (2026-07)
- **Last commit:** 2026-07-21 (active)
- **GitHub stars:** 1
- **Maintainers:** cclin99
- **AI assistance:** disclosed — The README describes "An AI-assisted Rust engine" developed "through human-directed AI collaboration"; 16 commits from July 2026 carry Claude co-author lines, and the repository contains Codex agent configuration.
- **How to cite:** The repository has a [CITATION.cff](https://github.com/cclin99/iso532-1-rs/blob/main/CITATION.cff) file. Name the version or commit you used.
- **Entry checked:** 2026-10-06

## What it implements

| Metric | Edition | Functions | Status | Validation (as stated) | Notes |
|---|---|---|---|---|---|
| [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html) | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary, time-varying and streaming; since 0.1.0) | `loudness_zwst`, `loudness_zwtv`, `ZwtvStream` | available | standard or paper data; also compared with MoSQITo | Python uses the same names (`iso532.loudness_zwst` …); the C API has `iso532_loudness_zwst`, `iso532_loudness_zwtv` and `iso532_stream_*`. |

## How it was validated

As reported by the project; LISQM has not run the code. Two implementations that agree can still share the same error.

- [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html), ISO 532-1:2017: standard or paper data; also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Parity tests with MoSQITo 1.2.1 on nine synthetic and Annex B signals (worst reported difference 1.3e-9).
  - Checked separately against ISO 532-1 Annex B: the README reports stationary offsets of about +0.82 % and −0.76 % for signals 3 and 5, inside the standard's tolerance, and details signals 3, 5 and 10 in docs/ISO-ANNEXB-NUMERICAL-ERROR-2026-07-04.md.

## Notes

- Not published on crates.io or PyPI (the crate and the Python module are named `iso532`). Version 0.1.0 exists as a git tag of 2026-07-19 and in CHANGELOG.md and CITATION.cff; there is no GitHub release.
- MoSQITo 1.2.1 is the reference implementation, credited in THIRD_PARTY_NOTICES.md; the stationary front end follows MoSQITo's `noct_spectrum` path.
- Expects calibrated pressure in pascals at 48 kHz. The stream outputs sone, phon and status flags on a 2 ms grid and marks the first 580 frames as warm-up.

## Before you rely on it

- The MoSQITo golden data and the ISO Annex B fixtures are gitignored and must be regenerated locally; the README says "Hosted CI does not by itself prove the local MoSQITo/Annex B golden chain".

## Sources

- https://github.com/cclin99/iso532-1-rs
- https://github.com/cclin99/iso532-1-rs/blob/main/README.md
- https://github.com/cclin99/iso532-1-rs/blob/main/CHANGELOG.md
- https://github.com/cclin99/iso532-1-rs/blob/main/THIRD_PARTY_NOTICES.md
- https://github.com/cclin99/iso532-1-rs/blob/main/docs/ISO-ANNEXB-NUMERICAL-ERROR-2026-07-04.md
