LISQM A List of Open-Source Implementations of Psychoacoustic and Sound Quality Metrics

Version 0.5.10 · data as of 28 October 2026
Source on GitHub

Metrics Roughness

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:

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

DateEditionStatusWhat changedImplemented by
1997Daniel & Weber (1997)publishedReference model.SQAT, MoSQITo, AARAE, ITA-Toolbox, MetaSona new, Mosqito.NET new, PsychoacousticMetrics.jl new, SoundPalette new, pySQAT developing, PsySound3 legacy
1985Aures (1985a)publishedEarlier 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.

Scroll the picture sideways.

Project map for Roughness (Daniel & Weber) ITA-Toolbox: MATLAB m   ITA-Toolbox no relation recorded AARAE: MATLAB m   AARAE SQAT: MATLAB m   SQAT Ported or adapted: AARAE to SQAT, for Daniel & Weber (1997) MetaSona: C, Python c   MetaSona Ported or adapted: SQAT to MetaSona, for Daniel & Weber (1997) pySQAT: Python py   pySQAT Ported or adapted: SQAT to pySQAT, for Daniel & Weber (1997) rota-order: Python py   rota-order Used at run time: rota-order calls SQAT for Daniel & Weber (1997) PsySound3: MATLAB m   PsySound3 Author's own code: PsySound3 to AARAE (Densil Cabrera), for Daniel & Weber (1997) MoSQITo: Python py   MoSQITo Ported or adapted: MoSQITo to MetaSona, for Daniel & Weber (1997) Mosqito.NET: C# c#   Mosqito.NET Ported or adapted: MoSQITo to Mosqito.NET, for Daniel & Weber (1997) PsychoacousticMetrics.jl: Julia jl   PsychoacousticMetrics.jl Ported or adapted: MoSQITo to PsychoacousticMetrics.jl, for Daniel & Weber (1997) Used at run time: rota-order calls MoSQITo for Daniel & Weber (1997) PsychoBox: Python py   PsychoBox Used at run time: PsychoBox calls MoSQITo for Daniel & Weber (1997) Soundscapy: Python py   Soundscapy Used at run time: Soundscapy calls MoSQITo for Daniel & Weber (1997) SoundPalette: C++ c++   SoundPalette Results checked: SoundPalette against MoSQITo, for Daniel & Weber (1997)

Implementations

ProjectEditionFunctionsValidation (as stated)Notes
SQAT
MATLAB
Daniel & Weber (1997)
since v1.0
Roughness_Daniel1997, Roughness_Daniel1997_from_wavfilestandard or paper dataThe 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_freqstandard or paper data
(outcome not stated)
—
AARAE
MATLAB
Daniel & Weber (1997)RoughnessDWnot statedPorted from PsySound3's @RoughnessDW by Ella Manor and Densil Cabrera (2015).
ITA-Toolbox
MATLAB
Daniel & Weber (1997)ita_roughness_danielstandard 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_webercompared 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.RoughnessDwFreqcompared with MoSQITo (its source)new
PsychoacousticMetrics.jl
Julia
Daniel & Weber (1997)
since 0.2.0
roughness_dwstandard or paper data
also compared with MoSQITo (its source)
new
SoundPalette
C++
Daniel & Weber (1997)
since v0.5.0
sp::compute_psychocompared with MoSQITonew source-available
pySQAT
Python
Daniel & Weber (1997)Roughness_Daniel1997compared with SQAT (its source)developing no licence Follows SQAT v1.3, before SQAT's September 2026 rewrite.
PsySound3
MATLAB
Daniel & Weber (1997)@RoughnessDWnot statedlegacy 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_dw on 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).
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.

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.

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 first time_skip seconds of the signal.
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_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.

References

  1. Aures, W. (1985). Ein Berechnungsverfahren der Rauhigkeit [A procedure for calculating auditory roughness]. Acustica, 58, 268–281.
  2. Daniel, P., & Weber, R. (1997). Psychoacoustical roughness: Implementation of an optimized model. Acta Acustica united with Acustica, 83(1), 113–123.

Metrics, standards and papers, projects, function names and pages.