Equal-loudness-level contours (ISO 226)
Normal equal-loudness-level contours for pure tones in free-field listening. ISO 226:2023 replaced ISO 226:2003; ECMA-418-2:2025 still refers to the 2003 edition.
The current edition is ISO 226:2023. 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: MoSQITo (Python; ISO 226:2003), PSYCHO (Pure Data, C; ISO 226:2003), PyDSM (Python; ISO 226:2003; tabled and interpolated contours; optional 20 kHz extension), Mosqito.NET (C#; newly released, not yet seen to be widely used; ISO 226:2003), and IoSR Matlab Toolbox (MATLAB; legacy, no commit since 2017-08; ISO 226:2003).
Editions and who implements them
| Date | Edition | Status | What changed | Implemented by |
|---|---|---|---|---|
| 2023-03 | ISO 226:2023 | current | Third edition. | phonometry new |
| 2003-08 | ISO 226:2003 | withdrawn | Second edition; withdrawn in 2023. | MoSQITo, PSYCHO, PyDSM, Mosqito.NET new, IoSR Matlab Toolbox legacy |
Project map
The project map, with only the lines for equal-loudness contours 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
- SQAT SQAT, MoSQITo, and sottek-hearing-model
- legacy legacy project
Implementations
| Project | Edition | Functions | Validation (as stated) | Notes |
|---|---|---|---|---|
| MoSQITo Python | ISO 226:2003 since 0.3.5 | equal_loudness_contours | not stated | The docstring gives no edition; it is based on Jeff Tackett's MATLAB code for ISO 226:2003. |
| PSYCHO Pure Data C | ISO 226:2003 | [iso226] | not stated | The help patch names ISO 226:2003. Related objects convert between phon and dB ([phon2db], [db2phon]) and between phon and sone ([phon2sone], [sone2phon]). |
| PyDSM Python | ISO 226:2003 tabled and interpolated contours; optional 20 kHz extension | pydsm.iso226 | not stated | — |
| phonometry Python | ISO 226:2023 since 3.1.0 | equal_loudness_contour, equal_loudness_contours, loudness_level, hearing_threshold | standard or paper data | new |
| Mosqito.NET C# | ISO 226:2003 | Sq.EqualLoudnessContours | not stated | new Code comments say ISO 226:1987, but the tables are ported from MoSQITo, whose code follows Jeff Tackett's ISO 226:2003 implementation. |
| IoSR Matlab Toolbox MATLAB | ISO 226:2003 | iosr.auditory.iso226 | not stated | legacy |
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.
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.
- phonometry new · ISO 226:2023
standard or paper data
- Tests compare 17 points of Table B.1 (20 to 90 phon, 20 Hz to 12.5 kHz) and 6 points of Table B.2 with the computed contours and loudness levels, within 0.05 dB or phon, and the hearing threshold with Table 1.
Not stated by MoSQITo, PSYCHO, PyDSM, Mosqito.NET, and IoSR Matlab Toolbox.
References
- ISO 226:2003. Acoustics — Normal equal-loudness-level contours. https://www.iso.org/standard/34222.html
- ISO 226:2023. Acoustics — Normal equal-loudness-level contours. https://www.iso.org/standard/83117.html