# SoundPalette

> 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/projects/soundpalette.html

**Newly released project.** Its psychoacoustic metrics were added in July 2026 (v0.5.0). Not yet seen to be widely used in the community. Check its validation before relying on it.

C++ tool for game audio that analyses a folder of sound effects and draws each file as a glyph in a palette, built as a static library, a command-line tool (including a lint mode for CI) and a desktop app. Its psychoacoustic block reports ISO 532-1 loudness (N5), DIN 45692 sharpness, Daniel & Weber roughness and an experimental fluctuation strength.

- **Repository:** https://github.com/onyx-prismantium/soundpalette
- **Language:** C++
- **Kind:** Application (A program to run, with a graphical or command-line interface; no programming needed.)
- **Group:** newly released (First released less than about a year ago, and not yet seen to be widely used in the community.)
- **Licence:** FSL-1.1-Apache-2.0 — Functional Source License 1.1, a source-available licence that is not OSI-approved: it allows any use except a competing commercial product or service, and each release becomes Apache-2.0 two years after publication. The README states that releases up to and including v0.7.0 were published under Apache-2.0.
- **Latest release:** v0.8.0 (2026-09)
- **Last commit:** 2026-09-27 (active)
- **GitHub stars:** 0
- **Maintainers:** onyx-prismantium
- **AI assistance:** disclosed — The repository contains a `CLAUDE.md` file, and 49 of its 54 commits carry "Co-Authored-By: Claude" trailers.
- **How to cite:** The project does not say how to cite it. Cite the repository with the version or commit you used.
- **Entry checked:** 2026-10-06

## What it implements

| Metric | Edition | Functions | Status | Validation (as stated) | Notes |
|---|---|---|---|---|---|
| [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html) | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (time-varying, reported as N5; monaural; since v0.5.0) | `sp::compute_psycho` | available | compared with MoSQITo | No MoSQITo code is ported. |
| [Sharpness](https://zhenxianli.github.io/LISQM/metrics/sharpness.html) | [DIN 45692:2009](https://www.dinmedia.de/en/standard/din-45692/117635111) (from time-averaged specific loudness; since v0.5.0) | `sp::compute_psycho` | available | compared with MoSQITo | — |
| [Roughness (Daniel & Weber)](https://zhenxianli.github.io/LISQM/metrics/roughness-daniel-weber.html) | [Daniel & Weber (1997)](https://zhenxianli.github.io/LISQM/standards.html#ref-daniel-weber-1997) (since v0.5.0) | `sp::compute_psycho` | available | compared with MoSQITo | — |

## How it was validated

As reported by the project; LISQM has not run the code. Two implementations that agree can still share the same error.

- [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html), ISO 532-1:2017: compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Compared with MoSQITo 1.2.1 on calibrated test signals, used as a development-time reference (`NOTES.md`, `tools/psycho_oracle`).
- [Sharpness](https://zhenxianli.github.io/LISQM/metrics/sharpness.html), DIN 45692:2009: compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Compared with MoSQITo 1.2.1 (tolerance ±5 %).
- [Roughness (Daniel & Weber)](https://zhenxianli.github.io/LISQM/metrics/roughness-daniel-weber.html), Daniel & Weber (1997): compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Compared with MoSQITo 1.2.1 with a wider tolerance (±15 %); the README notes that published Daniel & Weber implementations differ by about 10–20 %.

## Notes

- The psychoacoustic metrics were added in v0.5.0 (July 2026), with "mapping v2".
- Calibration convention: a signal measuring −23 LUFS is assumed to play at `ref_spl` dB SPL (default 75, allowed range 60–85). The value is stored in every manifest and profile, and comparisons between different `ref_spl` values are refused.
- Also computes fluctuation strength in vacil, flagged as experimental; the README names no model for it.

## Before you rely on it

- The Functional Source License is source-available, not an OSI-approved open-source licence; check its competing-use restriction before reusing the code.
- `NOTES.md` documents simplifications: the third-octave bands come from an STFT rather than the standard's filter bank, the temporal processing was tuned to MoSQITo's N5 values, and roughness uses a fixed 70 Hz weighting and 28 instead of 47 channels. Tolerances (±5 % for stationary loudness and sharpness, ±10 % for N5, ±15 % for roughness) are the acceptance criterion.
- Loudness in sones depends on the declared playback level (`ref_spl`), not on a measured calibration.

## Sources

- https://github.com/onyx-prismantium/soundpalette
- https://github.com/onyx-prismantium/soundpalette/blob/main/README.md
- https://github.com/onyx-prismantium/soundpalette/blob/main/LICENSE.md
- https://github.com/onyx-prismantium/soundpalette/blob/main/NOTES.md
- https://github.com/onyx-prismantium/soundpalette/blob/main/core/include/soundpalette/psycho.h
