antissa

One desktop suite for fixed-point signal design. Compare waveforms, debug live values across builds, diagnose precision losses — without rebuilding your DSP code to instrument it.

About Mantissa

Built by Mohammadreza Naghibzadeh for fixed-point porting and verification work. Questions or consulting work? Get in touch →

Wave Compare

Per-sample comparison between a float reference and one or two fixed-point ports of the same signal.

Select files and compare

Pick a float reference and one or two fixed-point .wav candidates — Wave Compare loads them onto a shared time axis and runs wav-diff straight away.

Navigate MLD, MAD, and SSNR

Step through the per-channel MLD (maximum loudness difference, BS.1387 perceptual), MAD (maximum absolute sample difference), and min SSNR (worst 20 ms segmental SNR) figures, jumping the plot to each worst-mismatch sample.

Audio playback

Play the reference and the candidates from any point on the shared timeline to hear where the fixed-point port drifts.

What it does

Load a float reference and one or two fixed-point candidates. Wave Compare overlays them in a shared time-axis plot and runs wav-diff per channel and reports three metrics: MLD (maximum loudness difference — the BS.1387 / 3GPP TR 26.843 perceptual ear-model peak), MAD (maximum absolute sample difference), and min SSNR (the worst 20 ms segmental SNR). Each metric drops a coloured marker on the plot so you can jump straight to the offending sample.

Typical workflow

  1. Drop a float .wav as the reference.
  2. Drop one or two fixed-point .wav files as candidates.
  3. Read the per-channel MLD / MAD / SSNR report.
  4. Click a marker to seek to the worst-mismatch sample in all overlays simultaneously.

Open Wave Compare from the activity rail's mode switcher inside the desktop app.

Debugger

Live fixed-point vs. float variable inspection, attached to a real running build.

Find and fix a precision bug live

Attached to a running build, the Debugger plots a fixed-point buffer against its float reference and pinpoints where precision is lost. Overwrite the bad buffer in place — written back from the float reference at the right Q-format — and the divergence is gone, without rebuilding.

What it does

Attach to a Visual Studio, VS Code (DAP), or GDB session and bind a fixed-point variable to its float counterpart. The pair is polled live, plotted side-by-side, and tagged with MLD markers so you can see where precision drifts in time — without rebuilding to instrument the code.

Backends

  • Visual Studio — attach via the running debug session.
  • VS Code (DAP) — attach via the Debug Adapter Protocol.
  • GDB — attach to a local gdbserver or running gdb.

Per-pair features

  • Q-factor auto-suggest based on observed range.
  • MLD markers overlaid on both float and fixed plots.
  • In-place editing — write a new value back to the running process.
  • Auto-pair — proposes fixed ↔ float bindings from your variable naming conventions (_fx / _fl and friends, configurable).
  • Pass/fail tolerance per pair — absolute (1e-6), relative (0.5%), or exact.
  • Projects — the whole watch setup (pairs, Q bindings, sessions, tolerances) saves to a .mproj file and reopens next session.

Open Debugger from the activity rail's mode switcher inside the desktop app.

AI agents

Bring the AI agent you already use — it drives Mantissa as an instrument through a built-in MCP server.

What it does

Mantissa runs a local, loopback-only MCP server, so Copilot agent mode, Claude Code, or Cursor can read buffers from your paused debug session, compare fixed vs float with the same Q-format math the app uses, and measure WAV differences (MLD / SSNR) — all from the chat you already work in. Registration is one click from the sparkles button in the top bar; the data never leaves your machine.

Ask your agent things like

  • “Compare ener_l against its float reference and tell me the best Q.”
  • “Read the fixed output buffer and check where it clips.”
  • “Measure the MLD between these two WAV files.”

Setup and the full tool list: AI agents help page.