Roughness, Daniel & Weber model
Roughness from the model of Daniel & Weber (1997), an optimised version of Aures's (1985) model. It is not standardised, and the paper leaves details open (filter bank, calibration, framing), so implementations can give different values for the same signal.
There is no standard; the reference model is Daniel & Weber (1997). Open-source implementations of it:
- Python MoSQITo, pySQAT developing
- MATLAB SQAT, AARAE, ITA-Toolbox, PsySound3 legacy
- C MetaSona new (also Python)
- C++ SoundPalette new
- C# Mosqito.NET new
- Julia PsychoacousticMetrics.jl new
SQAT rewrote its implementation in September 2026 (PR #65, released in v2.0). It builds on Alejandro Osses's code and was corrected against revised code that Dik Hermes provided in 2025, which changes results compared with SQAT v1.3 and earlier.
Editions and who implements them
| Date | Edition | Status | What changed | Implemented by |
|---|---|---|---|---|
| 1997 | Daniel & Weber (1997) | published | Reference model. | SQAT, MoSQITo, AARAE, ITA-Toolbox, MetaSona new, Mosqito.NET new, PsychoacousticMetrics.jl new, SoundPalette new, pySQAT developing, PsySound3 legacy |
| 1985 | Aures (1985a) | published | Earlier model that Daniel & Weber optimised. | — |
Project map
The project map, with only the lines for roughness (Daniel & Weber) 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
- used at run time
- results checked against
- SQAT SQAT, MoSQITo, and sottek-hearing-model
- legacy legacy project
Scroll the picture sideways.
Implementations
| Project | Edition | Functions | Validation (as stated) | Notes |
|---|---|---|---|---|
| SQAT MATLAB | Daniel & Weber (1997) since v1.0 | Roughness_Daniel1997, Roughness_Daniel1997_from_wavfile | standard or paper data | The v1.x code is AARAE's roughnessDW.m (Dik Hermes's code), adapted and verified for SQAT in 2023. v2.0 rewrites it (PR #65, 2026-09-08) with corrections from revised code that Dik Hermes sent to the SQAT team in 2025: 63 of 119 validation values go up and 56 down (largest change 0.155 asper). |
| MoSQITo Python | Daniel & Weber (1997) since 1.0.0 | roughness_dw, roughness_dw_freq | standard or paper data (outcome not stated) | — |
| AARAE MATLAB | Daniel & Weber (1997) | RoughnessDW | not stated | Ported from PsySound3's @RoughnessDW by Ella Manor and Densil Cabrera (2015). |
| ITA-Toolbox MATLAB | Daniel & Weber (1997) | ita_roughness_daniel | standard or paper data (a code comment only) | Uses sub-functions written by Martin Klemenz in 2000 (external_packages/roughness_daniel). |
| MetaSona C Python | Daniel & Weber (1997) since 0.1.0 | roughness_daniel_weber | compared with SQAT (its source) | new Follows SQAT revision e6228b78, which includes SQAT's September 2026 rewrite but not its later fix to the Terhardt filter bank (PR #77, in SQAT v2.0). |
| Mosqito.NET C# | Daniel & Weber (1997) | Sq.RoughnessDw, Sq.RoughnessDwFreq | compared with MoSQITo (its source) | new |
| PsychoacousticMetrics.jl Julia | Daniel & Weber (1997) since 0.2.0 | roughness_dw | standard or paper data also compared with MoSQITo (its source) | new |
| SoundPalette C++ | Daniel & Weber (1997) since v0.5.0 | sp::compute_psycho | compared with MoSQITo | new source-available |
| pySQAT Python | Daniel & Weber (1997) | Roughness_Daniel1997 | compared with SQAT (its source) | developing no licence Follows SQAT v1.3, before SQAT's September 2026 rewrite. |
| PsySound3 MATLAB | Daniel & Weber (1997) | @RoughnessDW | not stated | legacy no licence Adapted for PsySound3 by Matt Flax (2006), with changes by Farhan Rizwi (2007). AARAE's RoughnessDW.m is a port of this analyser. |
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.
Also available through tools that call one of these implementations: rota-order (via MoSQITo, Daniel & Weber (1997)), PsychoBox (via MoSQITo, Daniel & Weber (1997)), and Soundscapy (via MoSQITo, Daniel & Weber (1997)).
See also: Roughness from the Sottek Hearing Model (ECMA-418-2).
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.
- SQAT · Daniel & Weber (1997)
standard or paper data
Ported or adapted from AARAE.
- Checked against amplitude- and frequency-modulation dependences from the literature.
- MoSQITo · Daniel & Weber (1997)
standard or paper data (outcome not stated)
- The documentation marks it as validated against reference data.
- AARAE · Daniel & Weber (1997)
not stated
Ported or adapted from PsySound3 (the author's own code).
- ITA-Toolbox · Daniel & Weber (1997)
standard or paper data (a code comment only)
- A code comment says that after major bug fixes the values "more or less match those of the paper by Daniel"; no test or comparison script is included.
- MetaSona new · Daniel & Weber (1997)
compared with SQAT (its source)
Ported or adapted from SQAT and MoSQITo. It was compared with the code it was ported from, which checks the port only.
- The project says that detailed validation and reference comparisons are kept outside the repository; the results are not published.
- The API documentation calls the function experimental and says normative validation remains open.
- Mosqito.NET new · Daniel & Weber (1997)
compared with MoSQITo (its source)
Ported or adapted from MoSQITo. 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.
- PsychoacousticMetrics.jl new · Daniel & Weber (1997)
standard or paper data also compared with MoSQITo (its source)
Ported or adapted from MoSQITo. It was compared with the code it was ported from, which checks the port only.
- Tested against the Zwicker & Fastl reference curves on MoSQITo's validation grid (7 carrier × 11 modulation frequencies) within ±0.1 asper, and cross-checked against MoSQITo's
roughness_dwon identical signals. - Five points at a 2 kHz carrier miss the ±0.1 asper gate. MoSQITo misses them by the same amount (and overshoots Daniel & Weber's own curve there by 15–31 %), so these five are checked for agreement with MoSQITo to 5e-3 asper instead.
- Against the Daniel & Weber curves themselves, 63 of the 77 grid points are within 30 % of the reference (reported, not gated).
- Tested against the Zwicker & Fastl reference curves on MoSQITo's validation grid (7 carrier × 11 modulation frequencies) within ±0.1 asper, and cross-checked against MoSQITo's
- SoundPalette new · Daniel & Weber (1997)
compared with MoSQITo
- Compared with MoSQITo 1.2.1 with a wider tolerance (±15 %); the README notes that published Daniel & Weber implementations differ by about 10–20 %.
- rota-order new via MoSQITo · Daniel & Weber (1997) (through MoSQITo's roughness_dw)
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.
- rota-order new via SQAT · Daniel & Weber (1997) (through SQAT v2.0's Roughness_Daniel1997 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 developing · Daniel & Weber (1997)
compared with SQAT (its source)
Ported or adapted from SQAT. 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.
- Compared with SQAT v1.3, run in MATLAB, by
Not stated by 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.
- Frames. The model works on 200 ms frames. Implementations differ in the hop between frames and in whether the last complete frame is reported, which changes time series and their percentiles.
- Code lineage. SQAT's code (after Dik Hermes) and MoSQITo's differ in details, and ports follow one or the other; PsychoacousticMetrics.jl, which follows MoSQITo, says the two place the weighting g(z_i) differently.
- Version. SQAT rewrote its roughness in v2.0 (September 2026), so SQAT v1.3 and earlier, v2.0 and code ported from either give different values.
What the projects state:
- SQAT
- Statistics such as N5 take the nearest rank of the sorted time series, without interpolation (
get_exceeded_value), and leave out the firsttime_skipseconds of the signal.
- Statistics such as N5 take the nearest rank of the sorted time series, without interpolation (
- MetaSona new
- 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.
- rota-order new
- The method
vs_rpmof 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.
- The method
References
- Aures, W. (1985). Ein Berechnungsverfahren der Rauhigkeit [A procedure for calculating auditory roughness]. Acustica, 58, 268–281.
- Daniel, P., & Weber, R. (1997). Psychoacoustical roughness: Implementation of an optimized model. Acta Acustica united with Acustica, 83(1), 113–123.