qCLS is a categorical-loudness-scaling (CLS) test that was designed to efficiently measure loudness growth over a wide range of frequencies.
Installation
- A complete set of test materials (in a folder hierarchy) is available for download either as a compressed archive or a GitHub repository.
- This software is written in MATLAB code and has been tested on a PC under Windows 11 running MATLAB version 2021a.
- qCLS test materials are being distributed under a creative commons license (BY-NC-SA).
By default the tracker starts every listener from the same prior, [40 90 110]
+/- 10 dB at every frequency, which is identical for normal hearing and for a
70 dB loss. An audiogram is usually measured before loudness scaling begins, so
ignoring it discards the best information available at no cost.
par = qCLS_setup(thr, 'hl'); % conditioned prior
par = qCLS_setup(thr, 'hl', 'transducer', 'er3a'); % naming the transducer
par = qCLS_setup(); % unchanged, as qCLS_config
thr is 1x10 thresholds at 250, 500, 750, 1000, 1500, 2000, 3000, 4000, 6000
and 8000 Hz, with NaN where a frequency was not measured. A missing frequency
falls back to that band's population distribution rather than to a guess, and an
empty audiogram reproduces qCLS_config exactly.
Worth 0.396 dB, SE 0.116, t = 3.4, on 148 listeners replaying recorded responses, and better in 89 of them.
The regressions in cls_prior_hyper.mat were fitted against thresholds in
dB SPL, so dB HL has to have the RETSPL added, and which RETSPL depends on
the transducer. On one audiogram the CU 5 prior at 250 Hz lands at 67.9 dB SPL
under the legacy table and 58.2 under ER-3A inserts, 9.7 dB apart, at the
frequency where the prior is most sensitive to threshold.
Neither mistake fails loudly. units therefore has no default, and an
unrecognized transducer name raises rather than falling back. Available:
legacy (the default) and er3a.
Only tables measured at BTNRH are offered.
er3ais the table inclspf_demo.mandplot_cb.m. Published figures for TDH-39, TDH-49/50 and HDA200 were removed after the ER-3A row taken from that same source proved 3.5 dB low at 250 Hz rising to 15.5 dB at 8 kHz against the measured values.legacyis not ER-3A; it may be the Sennheiser HD 280 Pro circumaural headphone also used here, but that is unconfirmed. The same tables appear inqcls_core.cofneeste/qCLS-web; correcting one copy without the other makes the two implementations disagree.
[mu, V, muMAP] = qcls.report(); % mixture over anchor-frequency models
est = qCLS_estimate(struct('qcls', qcls));
The tracker carries a discrete posterior over 21 anchor-frequency subsets.
report averages over them rather than reading the single most likely model, so
the variance it returns includes the disagreement between models by the law of
total variance. The mixture mean is 0.22 to 0.25 dB more accurate than the mode
on 148 listeners, t = 7.2 with the shipped prior and 9.1 with an audiogram
prior.
qCLS_core/cls_prior_hyper.mat holds the regressions the audiogram prior uses.
It is generated by mcpf_mkhyper.m in neeste/fit_tenfrq, which reproduces the
shipped file exactly, all five fields, maximum difference 0.000e+00.