Skip to content

Releases: dgo42/Phonalyser

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 17:50

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, or phonalyser-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>.zip for 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 needs https:// or localhost and 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

Choose a tag to compare

@github-actions github-actions released this 21 Jul 21:34

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; Off and 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 .frc measurements 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

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

Choose a tag to compare

@github-actions github-actions released this 05 Jul 11:28
c0b2048

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.txt for 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.txt for 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 .jar packages. (The .dmg, .deb, .exe,
    and .Msix installers [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

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.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Jun 09:59
v1.0.2

v1.0-RC1

v1.0-RC1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Jun 18:15
v1.0-RC1