Releases: dgo42/Phonalyser
Release list
v1.2.0
Phonalyser 1.2.0
The release that takes the measurement off the desk: a machine wired to your
converters can now run as a headless server, and both the desktop
application and the browser version measure through it as though the hardware
were plugged in locally.
Highlights
- The Phonalyser server - a headless application serving every audio
backend on its machine (WASAPI, WDM-KS, CoreAudio, JavaSound, QA40x) to
several clients at once: exclusive per-device locks that name the holder,
multicast discovery, a two-second hardware rescan, console start or service
install (Windows service, systemd unit, macOS launch agent). One ZIP per
platform. No authentication, deliberately - it is a bench instrument for
a trusted network. - Measuring through it - a connected server's backends join the backend
selector, and devices, cards, calibration, the generator, the sweeps and
file playback behave as though local; a held device reads "in use by" with
the holder's name. A server also serves the browser app itself at/. - QA40x over WebUSB - the browser drives a QA402 / QA403 directly: full
duplex at 48 / 96 / 192 kHz (384 kHz on a QA403), device-provided
calibration, telemetry, and the experimental I2S port switch. - Measurement additions - an amplitude histogram for the oscilloscope, the
dBr magnitude unit (levels relative to the fundamental), output amplitude in
dBFS, a cancellable sweep, and warnings for the two silent measurement
killers: an uncalibrated device and a clipped sweep. - Hardware volume is part of the measurement on Linux and macOS: every
stream open pins the device to its own 0 dB, the close restores exactly what
the pin moved. Windows stays untouched by decision. - Fixed, among others - noise metrics pessimistic by the window's NENBW;
A-weighting now per IEC 61672; device loss mid-measurement went unreported
(macOS now ends both lanes and survives a replug without restart); macOS
rate lists come from the device's declared formats; the pre-24.04.deb
refusal; bare-JAR installs without help and translations.
Install
- Windows -
Phonalyser-1.2.0.exe(or the Microsoft Store); fat JARs
phonalyser-1.2.0-windows.jar/-windows-x86.jar. - Linux -
phonalyser_1.2.0-1_amd64.deb, orphonalyser-1.2.0-linux.jar. - macOS -
Phonalyser-1.2.0-arm64.dmg(Apple Silicon) or-x64.dmg
(Intel); JARs-macos.jar/-macos-x64.jar. - Server -
phonalyser-server-1.2.0-<platform>.zipfor windows-x64/x86,
linux-x64/aarch64, macos-x64/aarch64; runs on Java 17+. - Browser - Chromium only (Chrome, Edge, Opera, Brave); nothing to
install. The QA40x needshttps://orlocalhostand a WinUSB driver on
Windows.
Builds are unsigned - see the per-OS README on the release page for the
first-run bypass (SmartScreen / Gatekeeper). An existing preferences.yaml
reads unchanged.
Full changelog: CHANGELOG.md -
wire protocol: doc/NET-PROTOCOL.md.
v1.1.0
Phonalyser v1.1.0
Open-source (AGPLv3) audio analyzer for measuring audio devices — coherent
averaging with a frequency-locked loop, automatic notch/loopback
frequency-response compensation, and repeatable low-THD measurement.
What's New in 1.1.0
Added
- QA40x analyzer backend — drive a QuantAsylum QA402 / QA403 directly over
USB with the vendor software closed: always-duplex on the device's single
clock, true 24-bit samples, full-scale taken from the device's own range
calibration. libusb ships bundled on Windows and macOS; on Linux the.deb
sets up the USB permissions (udev) automatically. - Per-card calibration profiles — full-scale calibration belongs to the
physical card now: per-card range tables, per-channel Left / Right values, a
card editor in Preferences, automatic device recognition, and a known-card
catalog (E1DA Cosmos ADC, JLsounds I2SoverUSB). Upgrades never overwrite a
value you calibrated. - Frequency-response ideal-filter overlay & compare — Butterworth,
Chebyshev, inverse Chebyshev, elliptic and Bessel low-/high-/band-pass or
notch overlaid on the measured curve and compared like RIAA. - Frequency-response flatness readout — band edges of a ±X dB corridor or
the ± deviation over a chosen range, annotated on the plot. - Oscilloscope residual view — captured-minus-best-fit-tone per channel;
exposes distortion and glitches hidden under the fundamental (single and
dual tone). - DSO-grade dense trace rendering — digital-phosphor-style rasterisation
above one sample per pixel: true peak-to-peak at any zoom, anti-aliased
flanks, full capture rate on one-second windows. - Dither depth in bits or dBV — full-scale- and window-aware, so the
entered dBV reads straight off the FFT noise floor;Offand the FFT
averages'Off/∞are typed directly (o/of/off,i/in/inf). - Output-channel selection — Left / Right / Both selectors on the
generator, the frequency-response sweep and the notch tuner. - Web version catch-up — the browser port gains the per-card calibration
system, display persistence (WebGL2), the dual-tone frequency-lock loop and
IMD de-embedding, live-applied Preferences changes and more:
https://dgo42.github.io/Phonalyser/web/ - Documentation & tips — help chapters for all new features (en / de / uk)
and seven new Tips of the day in all 32 languages.
Changed
- Loaded
.frcmeasurements use the file's own recorded sample rate for the
analysis bandwidth; Compare auto-zoom fits the difference curve; notch
tuning measures both channels per pass; sample dots defer to persistence.
Deprecated
- The single shared ADC / DAC full-scale values — superseded by per-card
calibration profiles; removed in the next release.
Fixed
- Scope precision — rubber-band zoom exact at deep magnification (the
boxed detail lands under the box, time marks match the trace), handles and
value labels fully visible at the view edges, truthful offset readout
outside the grid, glitch trigger no longer selectable in Auto after a
capture start, held-trace horizontal pan, beat envelope on frozen captures,
±FS markers at fine V/div, screenshots at the configured trace width with
persistence trails. - Audio changes restart what was running — backend / device / rate / bit
depth changes stop the FFT, the capture and a playing generator first and
restart them on the new settings. - macOS — GPU scope window opens in place and follows the main window;
no more "Graphic is disposed" crash on exit. - Linux — GTK input-method startup crash fixed; GPU scope works under
Wayland (via XWayland). - Measurement honesty — discontinuity guard is amplitude-invariant (plus
an off switch), out-of-range IMD products read "---" instead of −600 dBV,
low sample rates (8–22.05 kHz) are offered where supported, persistence
keeps the anti-aliasing, blue measured-fundamental dot with a manual
fundamental.
Full changelog: https://dgo42.github.io/Phonalyser/changelog.html#v1.1.0
Downloads
Windows
Phonalyser-1.1.0.exe— installer (bundled Java runtime)phonalyser-1.1.0-windows.jar+Phonalyser-windows.bat— run on your own Java 17+phonalyser-1.1.0-windows-x86.jar— 32-bit legacy JAR- Also on the Microsoft Store: https://apps.microsoft.com/detail/9nr1w5dkw71m
macOS
Phonalyser-1.1.0-arm64.dmg— Apple Silicon (bundled runtime)Phonalyser-1.1.0-x64.dmg— Intel (bundled runtime)phonalyser-1.1.0-macos.jar(Apple Silicon) /phonalyser-1.1.0-macos-x64.jar(Intel) +Phonalyser-macos.sh
Linux
phonalyser_1.1.0-1_amd64.deb— Debian / Ubuntu (bundled runtime; installs
the QA40x udev rule automatically)phonalyser-1.1.0-linux.jar+Phonalyser-linux.sh— QA40x needs a one-file
udev setup, see the README's "QA40x on Linux (USB access)"
Browser — no install: https://dgo42.github.io/Phonalyser/web/
Requirements
- Java 17 or newer for the platform JARs (installers and DMGs bundle their own runtime)
- An audio interface — or a QA402 / QA403 — for measurement
Documentation
- Help & Theory of operation: https://dgo42.github.io/Phonalyser/web/help/en/index.html
- Landing site: https://dgo42.github.io/Phonalyser/
Notes
- Downloads are unsigned (see README "Code signing"): Windows SmartScreen —
More info → Run anyway; macOS Gatekeeper — right-click → Open or
xattr -dr com.apple.quarantine <file>. - UI in 32 languages, help in English / German / Ukrainian.
- License: AGPLv3.
v1.0.3
Phonalyser 1.0.3
Open-source (AGPLv3) audio analyzer for measuring audio devices — coherent
averaging with a frequency-locked loop, automatic notch/loopback frequency-
response compensation, and repeatable low-THD measurement. Windows / Linux /
macOS, plus a browser version.
What's new in 1.0.3
Added
- Notch-filter tuning module. Live tuning of a passive twin-T notch: a continuously looping log-sweep tracks the null in real time — its power-of-two period makes the transform shift-invariant, so no trigger or alignment is needed — and the notch's own response is then saved as a .frc calibration for de-embedding.
- DAC pre-distortion calibration. A closed-loop wizard that iteratively cancels the converter's own harmonics (and dual-tone IMD), pushing the playback chain's distortion far below what the DAC produces alone.
- Web version. A browser port of the analyzer — FFT, oscilloscope and signal generator — running with no install at https://dgo42.github.io/Phonalyser/web/.
- Oscilloscope. Rectangular rubber-band zoom with Ctrl+Z rollback, and a glitch trigger backed by a signal-discontinuity gate.
- Documentation. Expanded Theory of operation (tune-notch measurement, ADC characterisation, adaptive mains cancellers, digital-phosphor persistence) and the ALGORITHMS.md engineering catalogue; the project landing site.
Changed
- Oscilloscope. Whole-period integration for Vmean/Vrms (removes the partial-cycle scatter that grew with amplitude); exact horizontal pan/zoom positioning.
Downloads
Pick the asset for your platform. JVM required (Java 17+ — adjust to your
minimum) except where a bundled/native installer is noted.
Windows
Phonalyser_1.0.3.0_x64.Msix— signed MSIX installer (recommended). This
is the same signed package published on the Microsoft Store, provided here for
offline installation.Phonalyser-1.0.3.0.msix— MSIX package.Phonalyser-1.0.3.exe— GitHub CI build installer.phonalyser-1.0.3-windows.jar+Phonalyser-windows.bat— JAR with launch script (requires an installed JVM).phonalyser-1.0.3-windows-x86.jar— legacy JAR for 32-bit windows (requires an Zulu 17 x86 JVM).
Also available on the Microsoft Store:
https://apps.microsoft.com/detail/9nr1w5dkw71m
macOS
Phonalyser-1.0.3-arm64.dmg— Apple Silicon (M-series).Phonalyser-1.0.3-x64.dmg— Intel Macs.phonalyser-1.0.3-macos.jar(Apple Silicon) /phonalyser-1.0.3-macos-x64.jar
(Intel) +Phonalyser-macos.sh— JAR with launch script.- See
README-macos.txtfor first-run notes.
Note: the macOS build is tested but not yet notarized. On first launch you
may need to allow it via System Settings → Privacy & Security (see
README-macos.txt).
Linux
phonalyser_1.0.3-1_amd64.deb— Debian/Ubuntu package (amd64).phonalyser-1.0.3-linux.jar+Phonalyser-linux.sh— JAR with launch script.- See
README-linux.txtfor dependencies and audio-backend notes.
Browser
- A web version with ~99.9% of the functionality runs from the project page:
[add project/web page URL]
Requirements
- Java 17 or newer for the
.jarpackages. (The.dmg,.deb,.exe,
and.Msixinstallers [bundle a runtime / require a JVM — state which].) - An audio interface suitable for measurement. For low-THD work an
E1DA Cosmos ADC / ADCiso (or comparable) is the realistic entry point;
ordinary sound cards are limited by their own noise and distortion.
Documentation
- Help and Theory of Operation (the algorithms behind the coherent engine
and the compensation):
https://dgo42.github.io/Phonalyser/web/help/en/theory/index.html
Verifying the signed installer
The Windows .Msix assets are signed. To confirm before installing, right-click
→ Properties → Digital Signatures, or run:
Get-AuthenticodeSignature .\Phonalyser_1.0.3.0_x64.Msix
Translations
The UI ships in 32 languages (Help in 3), currently machine-translated. Native-
speaker corrections — especially for measurement terminology — are very welcome
via an issue or pull request.
Feedback
Bug reports and feature requests: Issues.
Discussion thread on diyAudio: [add link to your Equipment & Tools thread]
Licensed under AGPLv3. Full source in this release (Source code assets) and at
https://github.com/dgo42/Phonalyser
v1.0.2
v1.0-RC1
v1.0-RC1