# Tone-to-noise ratio and prominence ratio (ECMA-418-1)

> 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/tone-to-noise-prominence-ratio.html

**Quantity:** Tonality · **Unit:** dB · **Also known as:** TNR, PR, ECMA-418-1, ECMA-74 Annex D, prominent discrete tones, ANSI S1.13 Annex

Tone-to-noise ratio (TNR) and prominence ratio (PR) decide whether a discrete tone is prominent: TNR compares the tone with the noise in its critical band, PR compares the critical band with its neighbours. ECMA-418-1 took the method over from Annex D of ECMA-74 in 2020; its 3rd edition (2024) revised the TNR procedure.

The current edition is ECMA-418-1:2024 (3rd ed.). Open-source implementations of it: [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) (Python; newly released, not yet seen to be widely used) and [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) (Python; newly released, not yet seen to be widely used; tones in a power spectrum, and orders of a rotating machine along a run-up). 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. Implementations of earlier editions or related models: **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (Python; ECMA-74:2019 (17th ed.)), [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) (C#; newly released, not yet seen to be widely used; ECMA-74:2019 (17th ed.)), and [MoSQITo-FDP](https://zhenxianli.github.io/LISQM/projects/mosqito-fdp.html) (Python; legacy, archived; ECMA-74:2019 (17th ed.); Annex D).

## Editions and who implements them

| Date | Edition | Status | What changed | Implemented by |
|---|---|---|---|---|
| 2024-12 | [ECMA-418-1:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-1_3rd_edition_december_2024.pdf) | current | TNR procedure revised for repeatable results across FFT resolutions; terms rewritten. | [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) |
| 2022-12 | [ECMA-418-1:2022 (2nd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-1_2nd_edition_december_2022.pdf) | superseded | Maximum tone bandwidth for TNR set to 15 % of the critical band; corrections. | — |
| 2020-12 | [ECMA-418-1:2020 (1st ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-1_1st_edition_december_2020.pdf) | superseded | Based on, and mostly identical to, ECMA-74 Annex D. | — |
| 2019-12 | [ECMA-74:2019 (17th ed.)](https://ecma-international.org/publications-and-standards/standards/ecma-74/) | superseded | Annex D, before ECMA-418-1 existed. | **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**, [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html), [MoSQITo-FDP](https://zhenxianli.github.io/LISQM/projects/mosqito-fdp.html) |

## Project map

The lines of the project map for tone-to-noise ratio and prominence ratio 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 **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**: [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) (ECMA-74:2019 (17th ed.)); [MoSQITo-FDP](https://zhenxianli.github.io/LISQM/projects/mosqito-fdp.html) (ECMA-74:2019 (17th ed.))

### Results checked against another project

- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) against **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ECMA-418-1:2024 (3rd ed.))

### Same contributor

- **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** and [MoSQITo-FDP](https://zhenxianli.github.io/LISQM/projects/mosqito-fdp.html) (Daniel Jiménez-Caminero Costa)

On the map without a line, as no relation to another project listed for tone-to-noise ratio and prominence ratio is recorded for them: [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html).

## Implementations

| Project | Language | Edition | Functions | Validation (as stated) | Notes |
|---|---|---|---|---|---|
| **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** | Python | [ECMA-74:2019 (17th ed.)](https://ecma-international.org/publications-and-standards/standards/ecma-74/) (since 1.0.2) | `tnr_ecma_st`, `tnr_ecma_perseg`, `tnr_ecma_freq`, `pr_ecma_st`, `pr_ecma_perseg`, `pr_ecma_freq` | not stated | Docstrings say "ECMA 418-1" without an edition; the helper code and the bibliography cite ECMA-74 Annex D (17th edition, 2019). |
| [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) | Python | [ECMA-418-1:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-1_3rd_edition_december_2024.pdf) (since 3.1.0) | `tone_to_noise_ratio`, `prominence_ratio`, `assess_tones` | standard or paper data (formula examples; no published TNR or PR value) | Newly released project, not yet seen to be widely used. The "prominent" flag applies the numeric criterion only. |
| [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) | Python | [ECMA-418-1:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-1_3rd_edition_december_2024.pdf) (tones in a power spectrum, and orders of a rotating machine along a run-up; since 0.5.0) | `rota.tonal.tone_prominence`, `rota.tonal.order_prominence`, `rota.tonal.prominence_criterion` | standard or paper data (formula examples; no published TNR or PR value); also compared with MoSQITo | Newly released project, not yet seen to be widely used. The "prominent" flag applies the numeric criterion only; the aural check of audibility (Sections 11.8 and 12.8) is not assessed. |
| [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) | C# | [ECMA-74:2019 (17th ed.)](https://ecma-international.org/publications-and-standards/standards/ecma-74/) | `Sq.TnrEcmaSt`, `Sq.TnrEcmaFreq`, `Sq.TnrEcmaPerSeg`, `Sq.PrEcmaSt`, `Sq.PrEcmaFreq`, `Sq.PrEcmaPerSeg` | compared with MoSQITo (its source) | Newly released project, not yet seen to be widely used. The README cites ECMA-74 Annex D. |
| [MoSQITo-FDP](https://zhenxianli.github.io/LISQM/projects/mosqito-fdp.html) | Python | [ECMA-74:2019 (17th ed.)](https://ecma-international.org/publications-and-standards/standards/ecma-74/) (Annex D) | `comp_tnr`, `comp_pr` | own tests only | Legacy project, no longer maintained. |

**See also:** [Tonality from the Sottek Hearing Model (ECMA-418-2)](https://zhenxianli.github.io/LISQM/metrics/tonality-ecma-418-2.html), [Audibility of tones in noise (ISO/TS 20065)](https://zhenxianli.github.io/LISQM/metrics/tonal-audibility-iso-20065.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.

- **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**, ECMA-74:2019 (17th ed.): not stated
  - The documentation marks it as available but not validated.
- [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), ECMA-418-1:2024 (3rd ed.): standard or paper data (formula examples; no published TNR or PR value)
  - Tests check worked examples printed in ECMA-418-1:2024: the critical band at 500 Hz and 1 kHz (Clause 10, Formula 2), its band edges at 1 kHz (Clause 12.2) and the proximity spacing at 150 and 850 Hz (Clause 11.6, Formula 14).
  - TNR and PR of a 1 kHz tone in white noise are compared with the values expected from the standard's formulas (within 0.4 dB for TNR and 0.1 dB for PR); no TNR or PR value published in the standard is checked.
- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html), ECMA-418-1:2024 (3rd ed.): standard or paper data (formula examples; no published TNR or PR value); also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Tests check worked examples printed in ECMA-418-1:2024: the critical bandwidth at 500 Hz and 1 kHz (Clause 10), the band edges at 1 kHz (Clause 12.2) and the proximity spacing at 150 and 850 Hz (Clause 11.6). The criteria are checked at 100 Hz, 1 kHz and 5 kHz.
  - TNR and PR of tones at 140 Hz, 1 kHz and 3 kHz in white noise are compared with the values that the standard's formulas give for the known tone and noise powers, within 0.5 dB; on spectra built line by line they agree to within 1e-9 dB for TNR and 0.03 dB for PR. No TNR or PR value published in the standard is checked.
  - For an order in a synthetic run-up, `order_prominence` gives the TNR within 1 dB of the analytic value in every speed bin, with a mean error below 0.4 dB.
  - A test compares the TNR of tones at 130 Hz to 4 kHz in flat noise with MoSQITo's `tnr_ecma_st` and requires agreement within 1.5 dB. MoSQITo follows ECMA-74:2019, so the comparison crosses editions. The test runs only where MoSQITo is installed, which the project's continuous integration does not do.
- [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html), ECMA-74:2019 (17th ed.): 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.
  - 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); MoSQITo's unit tests are ported too.
- [MoSQITo-FDP](https://zhenxianli.github.io/LISQM/projects/mosqito-fdp.html), ECMA-74:2019 (17th ed.): own tests only
  - Ported or adapted from **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**.
  - The README lists TNR/PR as available but not validated; the tests use synthetic tones in white noise.

## 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:

- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html): Input in any unit is turned into sound pressure in Pa by an explicit calibration factor and resampled to 48 kHz. `order_prominence` analyses orders on the order-tracked (angle-domain) spectrum, so that an order stays one spectral line in every frame of a run-up. The docstring and a test show that a fixed time window long enough for the resolution the standard asks for at low frequency spreads a fast-sweeping order over the band and biases its TNR low, by about 19 dB in the test case. Where the text of the 3rd edition is inconsistent, the module notes how it is read: the secondary tone is added in Formulae (A.7) and (A.8), the tone spacing is \|f_s − f_p\|, 500 Hz takes arithmetic centring, the criteria cover 89.1 Hz to 11 200 Hz, and the misprints of Formulae (21) and (23) are resolved with their Annex B counterparts.

## References

1. ECMA-74:2019 (17th ed.). Measurement of airborne noise emitted by information technology and telecommunications equipment. https://ecma-international.org/publications-and-standards/standards/ecma-74/
2. ECMA-418-1:2020 (1st ed.). Psychoacoustic metrics for ITT equipment — Part 1 (prominent discrete tones). https://ecma-international.org/wp-content/uploads/ECMA-418-1_1st_edition_december_2020.pdf
3. ECMA-418-1:2022 (2nd ed.). Psychoacoustic metrics for ITT equipment — Part 1 (prominent discrete tones). https://ecma-international.org/wp-content/uploads/ECMA-418-1_2nd_edition_december_2022.pdf
4. ECMA-418-1:2024 (3rd ed.). Psychoacoustic metrics for ITT equipment — Part 1 (prominent discrete tones). https://ecma-international.org/wp-content/uploads/ECMA-418-1_3rd_edition_december_2024.pdf
