Moore–Glasberg loudness of stationary sounds (ISO 532-2, ANSI S3.4)
Loudness of stationary sounds from the Moore–Glasberg model: the spectrum is turned into an excitation pattern on the ERB-number scale, then into specific loudness, which is summed. ANSI S3.4-2007 standardised the model of Moore, Glasberg & Baer (1997) with later modifications; ISO 532-2:2017 specifies the method for monaural and binaural listening.
The current edition is ISO 532-2:2017. In development: ISO/CD 532-2. Open-source implementations of it:
- Python phonometry new
So far, only newly released projects, not yet seen to be widely used in the community, have released an implementation of it. Check their validation before relying on them.
Earlier editions or related models: AMT (MATLAB, Octave; Chen et al. (2011)), AMT (MATLAB, Octave; Moore, Glasberg & Baer (1997)), AARAE (MATLAB; Moore, Glasberg & Baer (1997); one channel, or two channels for binaural loudness), NumpyLibforPsychoAcoustic (Python; newly released, not yet seen to be widely used; Moore, Glasberg & Baer (1997)), deeuu/loudness (C++, Python; legacy, no commit since 2019-08; Chen et al. (2011)), deeuu/loudness (C++, Python; legacy, no commit since 2019-08; ANSI/ASA S3.4-2007; with the binaural inhibition of Moore & Glasberg (2007) for two ears), Swift & Gee codes (MATLAB; legacy, no commit since 2020-01; ANSI/ASA S3.4-2007), and PsySound3 (MATLAB; legacy, no commit since 2015-03; Moore, Glasberg & Baer (1997)).
Editions and who implements them
| Date | Edition | Status | What changed | Implemented by |
|---|---|---|---|---|
| 2024-11 | ISO/CD 532-2 | in development | Second edition at committee-draft stage since November 2024. | — |
| 2017-06 | ISO 532-2:2017 | current Under revision; the 2nd edition has been at committee-draft stage since 2024-11-01. | Monaural and binaural loudness of stationary sounds; source code supplied with the standard. | phonometry new |
| 2011 | Chen et al. (2011) | published | Faster excitation-pattern calculation, also for hearing loss (not standardised). | AMT, deeuu/loudness legacy |
| 2007 | ANSI/ASA S3.4-2007 | current | American standard based on the 1997 model with later modifications. | deeuu/loudness legacy, Swift & Gee codes legacy |
| 1997 | Moore, Glasberg & Baer (1997) | published | Model paper (thresholds, loudness and partial loudness). | AMT, AARAE, NumpyLibforPsychoAcoustic new, PsySound3 legacy |
Project map
The project map, with only the lines for Moore–Glasberg loudness between the projects listed for it. Agreement between a project and the code it was ported or adapted from only checks the port.
- ported or adapted from another project
- the author's own code
- legacy legacy project
Implementations
| Project | Edition | Functions | Validation (as stated) | Notes |
|---|---|---|---|---|
| AMT MATLAB Octave | Chen et al. (2011) | chen2011 | standard or paper data | Listed as "CHEN2011 - Fast excitation pattern estimation". |
| AMT MATLAB Octave | Moore, Glasberg & Baer (1997) | moore1997 | standard or paper data | Listed as "MOORE1997 - Loudness model for stationary signals" in models/Contents.m. |
| AARAE MATLAB | Moore, Glasberg & Baer (1997) one channel, or two channels for binaural loudness | Loudness_MGB2b | not stated | A port and extension of PsySound3's code by Densil Cabrera and Doheon Lee, version 1.02 (27 October 2015). Two-channel input gives binaural loudness after Moore & Glasberg (2007). The audio is resampled to 32 kHz. |
| phonometry Python | ISO 532-2:2017 with binaural inhibition; since 3.1.0 | loudness_moore_glasberg, loudness_moore_glasberg_from_spectrum, loudness_moore_glasberg_from_third_octave | standard or paper data | new |
| NumpyLibforPsychoAcoustic Python | Moore, Glasberg & Baer (1997) | model.moore1997, equalSones.getEqualSones | standard or paper data also compared with AMT (its source) | new no licence |
| deeuu/loudness C++ Python | Chen et al. (2011) | StationaryLoudnessCHGM2011 | own tests only | legacy |
| deeuu/loudness C++ Python | ANSI/ASA S3.4-2007 with the binaural inhibition of Moore & Glasberg (2007) for two ears | StationaryLoudnessANSIS342007 | own tests only | legacy |
| Swift & Gee codes MATLAB | ANSI/ASA S3.4-2007 | stationaryLoudness | not stated | legacy |
| PsySound3 MATLAB | Moore, Glasberg & Baer (1997) | @LoudnessMGB | not stated | legacy no licence Also cites Glasberg & Moore (1990) for the auditory filters. The analyser description says it covers time-varying and binaural loudness, and it also cites Glasberg & Moore (2002) and Moore & Glasberg (2007). |
Projects in bold and other established projects come first, then newly released, developing and legacy ones. Validation is what each project says about its own testing. The details are below, and the kinds of evidence are explained on the About page. The project map above shows which project was ported or adapted from which.
See also: Time-varying loudness, Moore–Glasberg–Schlittenlacher (ISO 532-3).
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. Kinds of evidence.
- AMT · Chen et al. (2011)
standard or paper data
- Has the experiment script
exp_chen2011; AMT's experiment scripts reproduce the results of the publication they are named after.
- Has the experiment script
- AMT · Moore, Glasberg & Baer (1997)
standard or paper data
- AMT's experiment scripts (
exp_…) reproduce published results; this model hasexp_moore1997.
- AMT's experiment scripts (
- AARAE · Moore, Glasberg & Baer (1997)
not stated
Ported or adapted from PsySound3 (the author's own code).
- phonometry new · ISO 532-2:2017
standard or paper data
- The documentation says it reproduces the Annex B tone and broadband cases to within a percent or two.
- NumpyLibforPsychoAcoustic new · Moore, Glasberg & Baer (1997)
standard or paper data also compared with AMT (its source)
Ported or adapted from AMT. It was compared with the code it was ported from, which checks the port only.
- The implementation document says the model is compared with the results shown in the original article (plots of its Fig. 8 and Fig. 12).
- Numerical error reports (PDF) compare intermediate arrays, such as the outer- and middle-ear filter, with AMT's MATLAB output.
- deeuu/loudness legacy · Chen et al. (2011)
own tests only
No further details are recorded here.
- deeuu/loudness legacy · ANSI/ASA S3.4-2007
own tests only
- Unit tests cover each module and model.
- A validation script writes computed and expected loudness of pure tones to CSV; the expected values are labelled "Table 7" and "Example 2" without naming their source.
Not stated by Swift & Gee codes and PsySound3.
Before you compare numbers
Implementations of the same metric can give different numbers without either being wrong. Check these choices first.
What the projects state:
- Swift & Gee codes legacy
- The code works at 32 kHz; other rates are resampled with the Signal Processing Toolbox's
resample.
- The code works at 32 kHz; other rates are resampled with the Signal Processing Toolbox's
References
- Moore, B. C. J., Glasberg, B. R., & Baer, T. (1997). A model for the prediction of thresholds, loudness, and partial loudness. Journal of the Audio Engineering Society, 45(4), 224–240. https://aes2.org/publications/elibrary-page/?id=10272
- ANSI/ASA S3.4-2007. Procedure for the Computation of Loudness of Steady Sounds. https://webstore.ansi.org/standards/asa/ANSIASAS32007R2020
- Chen, Z., Hu, G., Glasberg, B. R., & Moore, B. C. J. (2011). A new method of calculating auditory excitation patterns and loudness for steady sounds. Hearing Research, 282(1–2), 204–215. https://doi.org/10.1016/j.heares.2011.08.001
- ISO 532-2:2017. Acoustics — Methods for calculating loudness — Part 2: Moore-Glasberg method. https://www.iso.org/standard/63078.html
- ISO/CD 532-2. Acoustics — Methods for calculating loudness — Part 2: Moore-Glasberg method (2nd edition). https://www.iso.org/standard/90812.html