Skip to content

Repository files navigation

AcoustiQ

A room-acoustics measurement instrument for Android. RT60, clarity, speech intelligibility, distortion and more — each reported with a calculated measurement uncertainty, referenced to ISO / IEC / ANSI / AES standards, and verified against analytical truth and real measured rooms.

version status platform license

Status — alpha (v0.7a). This is early, actively-developed software: expect rough edges and open bugs — for example, some USB audio interfaces are not yet reliably detected or driven. Every number it does report is referenced to a published standard and checked against closed-form theory and real measured rooms. What is not yet done — cross-validation against commercial analysers, and a few paywalled standard clauses — is listed openly in docs/LIMITATIONS.md and scheduled before v1.0.


What it is

AcoustiQ is a native Android app (Kotlin + Jetpack Compose) that runs a room-acoustics measurement and reports the standard parameters, each with a calculated uncertainty.

Use it with a USB audio interface and a measurement microphone — that is the recommended setup and the path AcoustiQ is designed for. Multi-channel, multi-format USB interfaces are supported (you pick which input channel to capture), and external speakers are selectable as the output; the input and output device names you selected are recorded on the result and in the exported PDF. The built-in phone speaker and mic work for a quick test, but are not the measurement path.

A frequency band whose signal-to-noise ratio or repeatability is too low is reported as n/a rather than as a confident-but-wrong number.

AcoustiQ is built for audio engineers, AV integrators and acoustic consultants — and for researchers who want to inspect exactly how each number is produced. That is what this repository documents: the methods, the standards mapping, the uncertainty model, and the verification harness.

What it measures

Parameter In plain terms Referenced to
RT60 (T20 / T30) how long sound takes to fade away (by 60 dB) ISO 3382-1 / -2
EDT (early decay time) how reverberant the room feels ISO 3382-1
C50 / C80 (clarity) balance of early vs late energy (speech / music) ISO 3382-1
D50 (definition) % of energy in the first 50 ms (speech clarity) ISO 3382-1
Ts (centre time) the "centre of gravity" in time of the sound energy ISO 3382-1
STI / STIPA speech intelligibility (0–1) IEC 60268-16
SPL + A/C/Z weighting, noise floor sound level and how quiet the room is IEC 61672-1
Coherence how repeatable the measurement is, per frequency Müller & Massarani (2001)
THD speaker / amplifier distortion Farina (2000)
Room modes predicted bass resonances from room dimensions rectangular eigenmodes
Room modes, non-rectangular rooms predicted resonances for a room you draw, not just a rectangular box — a prediction from the drawn geometry, not a measured survey 2D-prism FEM eigensolver
Frequency response + EQ tonal balance and correction-filter suggestions RBJ cookbook
Spatial average a room average over several mic positions, with pooled uncertainty ISO 3382-1 / GUM

Capture modes: log-swept-sine (the reference), hand-clap, voice decay, STIPA, guided multi-position spatial averaging, modal decay, non-rectangular room modal analysis, stereo geometry, and device/microphone calibration. The non-rectangular modal analysis is a prediction computed from a room shape you draw — not a field-measured modal survey; it is validated against an independent solver on a rectangle only, and carries an element count and effective-frequency ceiling, detailed in docs/LIMITATIONS.md. Full detail in docs/METHODOLOGY.md.

Why you can trust the numbers

Correctness rests on three independent legs (see docs/VERIFICATION.md):

  1. Closed-form analytical truth — synthetic impulse responses with mathematically known answers are run through the real pipeline and checked against theory.
  2. Independent reference oracles — 27 numpy/scipy generators re-derive the expected values from published formulae, by an implementation that does not share the production code's algebra, and the pipeline is pinned to them.
  3. Real measured rooms — seven published/measured impulse responses from six rooms (Pori, Detmold's Brahmssaal and SommerTheater halls, BRAS, York Minster, St Margaret's, Aachen) are validated against primary-source published room parameters, within an inter-method scatter on the order of ±5 %.

Plus a standards-conformance suite, a per-metric uncertainty model, and mutation testing and coverage floors on the DSP core.

Documentation

Document What's in it
docs/ARCHITECTURE.md The code map — packages, the end-to-end measurement pipeline, and the test architecture.
docs/METHODOLOGY.md How each metric is computed — algorithm, standard, trust level.
docs/STANDARDS.md The standards-conformance map and the citation trust legend.
docs/UNCERTAINTY.md The GUM ± model: statistical (type-A) and hardware (type-B) terms.
docs/VERIFICATION.md The verification harness and how to reproduce it.
docs/LIMITATIONS.md Honest scope — what is not claimed, and the road to v1.0.

Build and run

Requirements: JDK 17, the Android SDK (compileSdk 35), and Android Studio or the bundled Gradle wrapper.

./gradlew assembleDebug      # debug APK -> app/build/outputs/apk/debug/

Install on an Android 8.0+ (API 26) device and grant microphone permission. For real measurements, connect a USB audio interface with a measurement microphone (and an external speaker); the built-in phone speaker and mic are for quick testing only.

./gradlew testDebugUnitTest              # full JVM unit + conformance + oracle suite
./gradlew testDebugUnitTest --rerun      # clean tally (forces a full re-run of the test task)

The real-room tests need impulse responses that are not bundled; see docs/VERIFICATION.md for the one-time fetch. Everything else runs offline.

Taking a measurement

  1. Pick the output (speaker) and input (microphone / interface channel).
  2. Optionally calibrate, so absolute SPL and corrected response are trustworthy.
  3. Pick a mode — Sweep is the most accurate.
  4. Set the room / use case (studio, hi-fi, lecture, worship, …).
  5. Start the measurement, keeping the room quiet.
  6. Read the result: each metric shows value ± uncertainty; ungated bands show n/a. Export a PDF report or the session JSON for your records.

Standards referenced

ISO 3382-1 / ISO 3382-2 · IEC 60268-16 · IEC 61260-1 · IEC 61672-1 · ANSI S1.11 · ANSI/ASA S12.2 · AES (Farina 2000; Olive/Welti Harman target) · ISO/IEC Guide 98-3 (GUM). The exact mapping, with an honest per-citation trust label, is in docs/STANDARDS.md.

Scope

AcoustiQ does not claim a specific IEC accuracy class, and cross-validation against commercial analysers (REW, SMAART, CLIO) is part of the road to v1.0. Read docs/LIMITATIONS.md before relying on a result for a critical decision.

Citing AcoustiQ

If you use AcoustiQ in research, please cite it using CITATION.cff.

Contributing

See CONTRIBUTING.md. Bug reports about a wrong measurement or a mis-stated citation are especially welcome.

License

Apache License 2.0. Third-party reference-data attributions are in NOTICE.

About

AcoustiQ — a standards-referenced room-acoustics measurement instrument for Android, each metric reported with a calculated measurement uncertainty (alpha v0.7a).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages