# Zwicker loudness (ISO 532-1, DIN 45631)

> 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/metrics/loudness-zwicker.html

**Quantity:** Loudness · **Unit:** sone, phon · **Also known as:** ISO 532-1, ISO 532B, ISO 532 method B, DIN 45631, DIN 45631/A1, Zwicker method

Loudness from Zwicker's model: third-octave band levels are turned into specific loudness on the critical-band (Bark) scale and integrated. ISO 532-1:2017 specifies one procedure for stationary sounds and one for time-varying sounds (from which percentile values are taken, such as N5, the loudness exceeded 5 % of the time), and replaced method B of ISO 532:1975. The German standards DIN 45631 (stationary) and DIN 45631/A1 (time-varying) specify Zwicker's method; ISO 532-1:2017 states that its stationary method is based on DIN 45631:1991.

The current edition is ISO 532-1:2017. In development: ISO/CD 532-1. Open-source implementations of it: **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (MATLAB; stationary and time-varying), **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (Python; stationary (also per segment and from a spectrum) and time-varying), [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html) (MATLAB; stationary and time-varying), [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html) (C, Python; newly released, not yet seen to be widely used; stationary and time-varying; also from 28 third-octave levels), [iso532-1-rs](https://zhenxianli.github.io/LISQM/projects/iso532-1-rs.html) (Rust, C, Python; newly released, not yet seen to be widely used; stationary, time-varying and streaming), [Kirin Hypha](https://zhenxianli.github.io/LISQM/projects/kirin-hypha.html) (Rust; newly released, not yet seen to be widely used; time-varying, per channel at 48 kHz; stored in the recorded data), [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) (C#; newly released, not yet seen to be widely used; stationary (also per segment and from a spectrum) and time-varying), [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) (Python; newly released, not yet seen to be widely used; stationary and time-varying), [SoundPalette](https://zhenxianli.github.io/LISQM/projects/soundpalette.html) (C++; newly released, not yet seen to be widely used; time-varying, reported as N5; monaural), [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html) (Julia; newly released, not yet seen to be widely used; stationary, from 28 one-third-octave band levels), [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) (Python; developing), and [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html) (Python; legacy, no commit since 2021-06; stationary and time-varying, from third-octave levels). Implementations of earlier editions or related models: [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html) (MATLAB; DIN 45631/A1:2010; time-varying, with N5), [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html) (MATLAB; Chalupper & Fastl (2002); time-varying), [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html) (MATLAB; DIN 45631:1991; stationary; free or diffuse field), [PsySound3](https://zhenxianli.github.io/LISQM/projects/psysound3.html) (MATLAB; legacy, no commit since 2015-03; Chalupper & Fastl (2002); time-varying), [deeuu/loudness](https://zhenxianli.github.io/LISQM/projects/deeuu-loudness.html) (C++, Python; legacy, no commit since 2019-08; DIN 45631:1991; stationary only), and [zwickerloudness](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-sourceforge.html) (C; legacy, no commit since 2018-06; DIN 45631:1991; stationary, from one-third-octave band levels).

In China, GB/T 25982-2024 (interior noise of buses, in force since July 2025) sets loudness and sharpness limits and gives Zwicker's calculation in an informative annex.

## Editions and who implements them

| Date | Edition | Status | What changed | Implemented by |
|---|---|---|---|---|
| 2024-11 | [ISO/CD 532-1](https://www.iso.org/standard/90809.html) | in development | Second edition at committee-draft stage since November 2024. | — |
| 2017-06 | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) | current; Under revision; the 2nd edition has been at committee-draft stage since 2024-11-01. | Stationary and time-varying procedures; Annex A reference program, Annex B test signals. | **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**, **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**, [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html), [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html), [iso532-1-rs](https://zhenxianli.github.io/LISQM/projects/iso532-1-rs.html), [Kirin Hypha](https://zhenxianli.github.io/LISQM/projects/kirin-hypha.html), [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html), [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), [SoundPalette](https://zhenxianli.github.io/LISQM/projects/soundpalette.html), [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html), [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html), [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html) |
| 2010-03 | [DIN 45631/A1:2010](https://www.dinmedia.de/en/standard/din-45631-a1/122476084) | current | Adds the procedure for time-varying sounds. | [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html) |
| 2002 | [Chalupper & Fastl (2002)](https://www.ingentaconnect.com/contentone/dav/aaua/2002/00000088/00000003/art00009) | published | Dynamic loudness model built on Zwicker's model, also for hearing impairment (not standardised). | [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html), [PsySound3](https://zhenxianli.github.io/LISQM/projects/psysound3.html) |
| 1991-03 | [DIN 45631:1991](https://www.dinmedia.de/en/standard/din-45631/1666531) | current | Stationary sounds. | [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html), [deeuu/loudness](https://zhenxianli.github.io/LISQM/projects/deeuu-loudness.html), [zwickerloudness](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-sourceforge.html) |
| 1975-07 | [ISO 532:1975](https://www.iso.org/standard/4603.html) | withdrawn | Method B (Zwicker) for stationary sounds, from third-octave levels. | — |

## Project map

The lines of the project map for Zwicker loudness only, between the projects listed for it (the whole map: https://zhenxianli.github.io/LISQM/projects/map.md). Agreement between a project and the code it was ported or adapted from only checks the port.

### Ported or adapted from another project

- From [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html): **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (ISO 532-1:2017)
- From BASIC program of DIN 45631 (Zwicker et al., 1991): **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ISO 532-1:2017); [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html) (DIN 45631:1991); [deeuu/loudness](https://zhenxianli.github.io/LISQM/projects/deeuu-loudness.html) (DIN 45631:1991); [zwickerloudness](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-sourceforge.html) (DIN 45631:1991)
- From ISO 532-1 Annex A reference program: [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html) (ISO 532-1:2017); [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) (ISO 532-1:2017)
- From **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**: [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html) (ISO 532-1:2017); [Kirin Hypha](https://zhenxianli.github.io/LISQM/projects/kirin-hypha.html) (ISO 532-1:2017); [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) (ISO 532-1:2017); [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html) (ISO 532-1:2017); [ZwickerLoudnessAudio.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html) (ISO 532-1:2017)
- From **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**: [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html) (ISO 532-1:2017); [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) (ISO 532-1:2017)

### The author's own code

- From [PsySound3](https://zhenxianli.github.io/LISQM/projects/psysound3.html) (Densil Cabrera): [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html) (Chalupper & Fastl (2002))

### Used at run time

- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) calls **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ISO 532-1:2017)
- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) calls **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (ISO 532-1:2017)
- [PsychoBox](https://zhenxianli.github.io/LISQM/projects/psychobox.html) calls **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ISO 532-1:2017)
- [Soundscapy](https://zhenxianli.github.io/LISQM/projects/soundscapy.html) calls **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ISO 532-1:2017)
- [ZwickerLoudnessAudio.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html) calls [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html) (ISO 532-1:2017)

### Results checked against another project

- [iso532-1-rs](https://zhenxianli.github.io/LISQM/projects/iso532-1-rs.html) against **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ISO 532-1:2017)
- [SoundPalette](https://zhenxianli.github.io/LISQM/projects/soundpalette.html) against **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ISO 532-1:2017)

### Same contributor

- [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html) and [ZwickerLoudnessAudio.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html) (slink)

On the map without a line, as no relation to another project listed for Zwicker loudness is recorded for them: [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html).

## Implementations

| Project | Language | Edition | Functions | Validation (as stated) | Notes |
|---|---|---|---|---|---|
| **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** | MATLAB | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary and time-varying; since v1.0) | `Loudness_ISO532_1`, `Loudness_ISO532_1_from_wavfile` | standard or paper data | v2.0 corrects the time-varying procedure (PR #48) and the `time_skip` handling of the stationary procedure; results differ from v1.x. |
| **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** | Python | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary (also per segment and from a spectrum) and time-varying; since 1.0.0) | `loudness_zwst`, `loudness_zwst_perseg`, `loudness_zwst_freq`, `loudness_zwtv` | standard or paper data (outcome not stated) | — |
| [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html) | MATLAB | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary and time-varying) | `Loudness_ISO532_1` | standard or paper data (time-varying signals only) | The header cites a 2014 draft of ISO 532-1 and describes the code as Ella Manor's 2015 MATLAB port, with adjustments, of the Annex A C code. |
| [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html) | MATLAB | [DIN 45631/A1:2010](https://www.dinmedia.de/en/standard/din-45631-a1/122476084) (time-varying, with N5) | `ita_loudness_timevariant` | standard or paper data (results plotted, not checked) | The header says "DIN 45631/A1" without a year; the function was written in August 2010, after the amendment was published. A code comment says the C code of the nonlinearity block was copied from the DIN document, "without its errors". |
| [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html) | MATLAB | [Chalupper & Fastl (2002)](https://www.ingentaconnect.com/contentone/dav/aaua/2002/00000088/00000003/art00009) (time-varying) | `LoudnessCF` | not stated | Also outputs loudness fluctuation and time-varying sharpness. Josef Chalupper's code (2000) in its PsySound3 version (2007), adjusted for AARAE by Ella Manor in 2015. |
| [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html) | MATLAB | [DIN 45631:1991](https://www.dinmedia.de/en/standard/din-45631/1666531) (stationary; free or diffuse field) | `ita_loudness` | standard or paper data | The header says "DIN 45631 / ISO 532 B". The C core (`private/DIN45631.c`) is Aaron Hastings' version (2000) of the BASIC program published by Zwicker, Fastl, Widmann, Kurakata, Kuwano and Namba in J. Acoust. Soc. Jpn (E) 12(1), 1991. |
| [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html) | C, Python | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary and time-varying; also from 28 third-octave levels; since 0.1.0) | `stationary_loudness`, `time_varying_loudness`, `loudness_from_levels` | compared with MoSQITo (its source) | Newly released project, not yet seen to be widely used. |
| [iso532-1-rs](https://zhenxianli.github.io/LISQM/projects/iso532-1-rs.html) | Rust, C, Python | [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` | standard or paper data; also compared with MoSQITo | Newly released project, not yet seen to be widely used. Python uses the same names (`iso532.loudness_zwst` …); the C API has `iso532_loudness_zwst`, `iso532_loudness_zwtv` and `iso532_stream_*`. |
| [Kirin Hypha](https://zhenxianli.github.io/LISQM/projects/kirin-hypha.html) | Rust | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (time-varying, per channel at 48 kHz; stored in the recorded data; since 1.0.0) | `kirin_measure::phase_d` | compared with MoSQITo (its source) | Newly released project, not yet seen to be widely used. Ported from MoSQITo v1.2.1. |
| [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) | C# | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary (also per segment and from a spectrum) and time-varying) | `Sq.LoudnessZwst`, `Sq.LoudnessZwstFreq`, `Sq.LoudnessZwstPerSeg`, `Sq.LoudnessZwtv` | standard or paper data; also compared with MoSQITo (its source) | Newly released project, not yet seen to be widely used. |
| [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) | Python | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary and time-varying; since 3.1.0) | `loudness_zwicker`, `loudness_zwicker_from_spectrum` | standard or paper data | Newly released project, not yet seen to be widely used. |
| [SoundPalette](https://zhenxianli.github.io/LISQM/projects/soundpalette.html) | C++ | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (time-varying, reported as N5; monaural; since v0.5.0) | `sp::compute_psycho` | compared with MoSQITo | Newly released project, not yet seen to be widely used. A source-available licence, not an open-source one: some uses are not allowed. No MoSQITo code is ported. |
| [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html) | Julia | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary, from 28 one-third-octave band levels; since 0.2.0) | `zwicker_loudness` | standard or paper data (one Annex B signal); also compared with MoSQITo | Newly released project, not yet seen to be widely used. |
| [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html) | Julia | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (time-varying, from band levels at 2000 Hz; N5 and N10; since 0.3.0) | `zwicker_loudness_time_varying` | standard or paper data (one Annex B signal); also compared with MoSQITo (its source) | Newly released project, not yet seen to be widely used. |
| [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) | Python | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) | `Loudness_ISO532_1` | compared with SQAT (its source) | Developing project: no publication or documented use by others. No licence file: by default, copying, changing or sharing the code needs the author's permission. |
| [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html) | Python | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary and time-varying, from third-octave levels) | `loudness_ISO532`, `loudness_ISO532_time` | not stated | Legacy project, no longer maintained. No licence file: by default, copying, changing or sharing the code needs the author's permission. The file header says "Loudness ISO 532-1:2014" and the filter coefficients are labelled "ISO 532-1:2014"; the published edition is ISO 532-1:2017. |
| [PsySound3](https://zhenxianli.github.io/LISQM/projects/psysound3.html) | MATLAB | [Chalupper & Fastl (2002)](https://www.ingentaconnect.com/contentone/dav/aaua/2002/00000088/00000003/art00009) (time-varying) | `@LoudnessCF` | not stated | Legacy project, no longer maintained. No licence file: by default, copying, changing or sharing the code needs the author's permission. The analyser names J. Chalupper and H. Fastl as authors. |
| [deeuu/loudness](https://zhenxianli.github.io/LISQM/projects/deeuu-loudness.html) | C++, Python | [DIN 45631:1991](https://www.dinmedia.de/en/standard/din-45631/1666531) (stationary only) | `StationaryLoudnessDIN456311991` | compared with GENESIS ACOUSTICS code (Python port) | Legacy project, no longer maintained. Uses 28 third-octave filters with third-order Butterworth responses after ANSI S1.11:1986; there is no time-varying (DIN 45631/A1) model. |
| [zwickerloudness](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-sourceforge.html) | C | [DIN 45631:1991](https://www.dinmedia.de/en/standard/din-45631/1666531) (stationary, from one-third-octave band levels) | — | own tests only | Legacy project, no longer maintained. Port of the 1991 BASIC program "according to DIN 45631 (ISO 532B)", the program that accompanies DIN 45631:1991; the same program is the basis of deeuu/loudness. |

Also available through tools that call one of these implementations: [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) (via MoSQITo, ISO 532-1:2017), [PsychoBox](https://zhenxianli.github.io/LISQM/projects/psychobox.html) (via MoSQITo, ISO 532-1:2017), [Soundscapy](https://zhenxianli.github.io/LISQM/projects/soundscapy.html) (via MoSQITo, ISO 532-1:2017), and [ZwickerLoudnessAudio.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html) (via ZwickerLoudness.jl, ISO 532-1:2017).

**See also:** [Sharpness (DIN 45692, Aures, von Bismarck)](https://zhenxianli.github.io/LISQM/metrics/sharpness.html), [Loudness from the Sottek Hearing Model (ECMA-418-2)](https://zhenxianli.github.io/LISQM/metrics/loudness-ecma-418-2.html)

## How they were validated

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

- **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**, ISO 532-1:2017: standard or paper data
  - Ported or adapted from [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html).
  - Checked with the 25 test signals of Annex B.2–B.5 against the standard's tolerances.
  - For v2.0, the validation notes say that the maximum loudness and N5 of the time-varying test signals are close to the reference values, apart from offsets in the N5 of test signals 12 and 13 that they trace to the standard's reference spreadsheet. In v1.3, test signal 10 deviated by 18.14 % (PR #48).
- **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**, ISO 532-1:2017: standard or paper data (outcome not stated)
  - Ported or adapted from BASIC program of DIN 45631 (Zwicker et al., 1991).
  - Validation scripts use the ISO 532-1 Annex B test signals; the documentation marks it as validated.
- [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html), ISO 532-1:2017: standard or paper data (time-varying signals only)
  - Ported or adapted from ISO 532-1 Annex A reference program.
  - A commit of 2017-12-11 says the code was verified with the time-varying test signals of Annex B.5; no check of the stationary method is stated.
- [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html), DIN 45631/A1:2010: standard or paper data (results plotted, not checked)
  - A test script plots the results for the amendment's test signals A to D (1 kHz tone pulses of 10 ms to 500 ms) against its tolerance bands; it does not check them automatically.
- [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html), Chalupper & Fastl (2002): not stated
  - Ported or adapted from [PsySound3](https://zhenxianli.github.io/LISQM/projects/psysound3.html) (the author's own code).
- [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html), DIN 45631:1991: standard or paper data
  - Ported or adapted from BASIC program of DIN 45631 (Zwicker et al., 1991).
  - A test compares the loudness of a generated pink noise with 95.09 sone (GF), a value the test attributes to DIN 45631, within 5 %, with third-octave levels computed both by FFT and by filter bank.
- [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html), ISO 532-1:2017: compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (its source)
  - Ported or adapted from **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** and **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**. It was compared with the code it was ported from, which checks the port only.
  - Model tables taken from MoSQITo were checked element by element; one upper-slope value (0.22) follows the ISO 532-1 reference C table where MoSQITo uses 0.24.
  - The project says that detailed validation and reference comparisons are kept outside the repository; the results are not published. The README says standards conformance has not been established.
- [iso532-1-rs](https://zhenxianli.github.io/LISQM/projects/iso532-1-rs.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.
- [Kirin Hypha](https://zhenxianli.github.io/LISQM/projects/kirin-hypha.html), ISO 532-1:2017: compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (its source)
  - Ported or adapted from **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**. It was compared with the code it was ported from, which checks the port only.
  - Tests assert specific loudness within a relative 1e-3 of MoSQITo.
- [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html), ISO 532-1:2017: standard or paper data; also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (its source)
  - Ported or adapted from **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**. It was compared with the code it was ported from, which checks the port only.
  - Unit tests ported from MoSQITo compare stationary loudness with ISO 532-1 Annex B values.
  - Every public function is compared with the output of Python MoSQITo for seven WAV files (three of them ISO 532-1 test signals), within 1 % (0.5 dB for levels).
- [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), ISO 532-1:2017: standard or paper data
  - Ported or adapted from ISO 532-1 Annex A reference program.
  - Annex B test signals are used in the tests.
- [SoundPalette](https://zhenxianli.github.io/LISQM/projects/soundpalette.html), ISO 532-1:2017: compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Compared with MoSQITo 1.2.1 on calibrated test signals, used as a development-time reference (`NOTES.md`, `tools/psycho_oracle`).
- [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html), ISO 532-1:2017 (stationary, from 28 one-third-octave band levels): standard or paper data (one Annex B signal); also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Checked against ISO 532-1 Annex B signal 1, the only 28-band reference in Annex B (83.296 sone, tolerance ±5 %).
  - Checked per Bark bin against MoSQITo output (maximum difference below 0.001 sone/Bark).
- [ZwickerLoudness.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-jl.html), ISO 532-1:2017 (time-varying, from band levels at 2000 Hz; N5 and N10): standard or paper data (one Annex B signal); also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (its source)
  - Ported or adapted from **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**. It was compared with the code it was ported from, which checks the port only.
  - Stages are tested against MoSQITo `loudness_zwtv` intermediates (agreement about 1e-9 to 1e-15).
  - An Annex B.4 "Test signal 6" test regenerates band levels from a local MoSQITo checkout and is skipped when none is present; CI clones MoSQITo for it.
  - The ISO WAV files are not included.
- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) (via MoSQITo), ISO 532-1:2017 (time-varying, through MoSQITo's loudness_zwtv): own tests only
  - Tests, which run only where MoSQITo is installed (the project's continuous integration does not install it), check that the wrapper returns what a direct call of MoSQITo gives on the same signal, also after resampling to 48 kHz, that the calibration factor scales the loudness, and that `vs_rpm` gives what binning the values by hand gives.
- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) (via SQAT), ISO 532-1:2017 (time-varying, through SQAT v2.0's Loudness_ISO532_1 in MATLAB): own tests only
  - Tests with a stub engine check the call passed to SQAT and the conversion of its output; the comparison with a direct SQAT call runs only where MATLAB and SQAT v2.0 are installed.
- [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html), ISO 532-1:2017: compared with **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (its source)
  - Ported or adapted from **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**. It was compared with the code it was ported from, which checks the port only.
  - Compared with SQAT v1.3, run in MATLAB, by `validation/FINAL_VAL.py`; the generated reports are not committed.
- [deeuu/loudness](https://zhenxianli.github.io/LISQM/projects/deeuu-loudness.html), DIN 45631:1991: compared with GENESIS ACOUSTICS code (Python port)
  - Ported or adapted from BASIC program of DIN 45631 (Zwicker et al., 1991).
  - Tested against "a quick and dirty Python port of the Matlab code private by GENESIS ACOUSTICS".
- [zwickerloudness](https://zhenxianli.github.io/LISQM/projects/zwickerloudness-sourceforge.html), DIN 45631:1991: own tests only
  - Ported or adapted from BASIC program of DIN 45631 (Zwicker et al., 1991).
  - The documentation in the release archive says that tests with "classical cases", such as the included test WAV files, "seems to give correct results", and invites users to compare the output with that of the original BASIC program.
- [ZwickerLoudnessAudio.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html) (via ZwickerLoudness.jl), ISO 532-1:2017 (stationary, from a waveform or WAV file): standard or paper data
  - ISO 532-1 Annex B signals 2–5, synthesised in-process, are within the standard's ±5 % (+2.9 %, +3.6 %, +0.5 % and +2.6 % per the README).
- [ZwickerLoudnessAudio.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html) (via ZwickerLoudness.jl), ISO 532-1:2017 (time-varying, from a waveform or WAV file at 48 kHz): standard or paper data; also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (its source)
  - Ported or adapted from **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**. It was compared with the code it was ported from, which checks the port only.
  - Cross-checked end to end with MoSQITo `loudness_zwtv` (N(t) about 3e-16 relative, N5/N10 about 2e-15 absolute).
  - An Annex B.4 test is skipped when the ISO recording is not available locally.

Not stated by PsychoacousticParametersMeasurer, PsySound3, PsychoBox, and Soundscapy.

## Before you compare numbers

Implementations of the same metric can give different numbers without either being wrong. Check these choices first.

- **Sound field.** ISO 532-1 has a free-field and a diffuse-field version, which give different values for the same signal. Most implementations use free field unless told otherwise.
- **Calibration.** The input is sound pressure in pascals. Audio read from a file has to be scaled first, and tools ask for this in different ways: a calibration factor, a reference level or a full-scale level.
- **Sample rate.** The time-varying method is specified at 48 kHz. Some implementations reject other rates, others resample them, and the resampler changes the result slightly.
- **Percentiles.** N5, the loudness exceeded 5 % of the time, depends on how the percentile is taken: SQAT picks the nearest rank, while MATLAB's `prctile` and the NumPy and Julia quantile functions interpolate, each in its own way.
- **Start of the signal.** Time-varying loudness starts from silence and needs time to settle. Whether the start is left out of N5 and other statistics (`time_skip` in SQAT, `time_skip_s` in MetaSona) matters for short signals.

What the projects state:

- **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**: Statistics such as N5 take the nearest rank of the sorted time series, without interpolation (`get_exceeded_value`), and leave out the first `time_skip` seconds of the signal.
- **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**: Signals sampled below 48 kHz are resampled to 48 kHz (FFT method) with a warning; time-varying loudness rejects rates above 48 kHz.
- [ITA-Toolbox](https://zhenxianli.github.io/LISQM/projects/ita-toolbox.html): N5 is MATLAB's `prctile(N, 95)`. Blocks are 2 ms long without overlap by default, and the signal is processed at its own sample rate. Third-octave levels come from an FFT by default, or from a filter bank (`'mode', 'filter'`).
- [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html): Expects calibrated sound pressure in pascals. The C functions require 48 kHz input; the Python interface resamples other rates to 48 kHz (SciPy `resample_poly`). `time_skip_s` (default 0 s) leaves out the start of the signal from the reported frames; the computation still runs over the whole signal. Time-varying results include every complete frame, labelled at frame centres, which differs from SQAT's handling of the last frame and of time stamps.
- [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html): Time-varying loudness and ECMA-418-2 roughness resample input at any other rate to 48 kHz, and stationary loudness resamples rates below 48 kHz; MoSQITo rejects rates above 48 kHz for time-varying loudness.
- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html): The method `vs_rpm` of a wrapper's result bins it along rpm after leaving out the start of the signal: by default it takes in each speed bin the 95th percentile of the loudness (N5), the median of the sharpness and the 90th percentile of the roughness, after 0.6 s for loudness and sharpness and 1.5 s for roughness. Keyword arguments override these choices. Input in any unit is turned into sound pressure in Pa by an explicit calibration factor and resampled to 48 kHz.
- [ZwickerLoudnessAudio.jl](https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html): Stationary loudness resamples input below 48 kHz to 48 kHz (polyphase), with a warning. Time-varying loudness accepts 48 kHz input only (an error otherwise).

## References

1. ISO 532:1975. Acoustics — Method for calculating loudness level. https://www.iso.org/standard/4603.html
2. DIN 45631:1991. Berechnung des Lautstärkepegels und der Lautheit aus dem Geräuschspektrum; Verfahren nach E. Zwicker. https://www.dinmedia.de/en/standard/din-45631/1666531
3. Chalupper, J., & Fastl, H. (2002). Dynamic loudness model (DLM) for normal and hearing-impaired listeners. *Acta Acustica united with Acustica*, 88(3), 378–386. https://www.ingentaconnect.com/contentone/dav/aaua/2002/00000088/00000003/art00009
4. DIN 45631/A1:2010. Calculation of loudness level and loudness from the sound spectrum — Zwicker method — Amendment 1: Calculation of the loudness of time-variant sound. https://www.dinmedia.de/en/standard/din-45631-a1/122476084
5. ISO 532-1:2017. Acoustics — Methods for calculating loudness — Part 1: Zwicker method. https://www.iso.org/standard/63077.html
6. ISO/CD 532-1. Acoustics — Methods for calculating loudness — Part 1: Zwicker method (2nd edition). https://www.iso.org/standard/90809.html
