Resonalyze is an open-source desktop application for measuring and visualizing the acoustic behavior of audio systems, rooms, loudspeakers, headphones, microphones, and complete signal paths.
It generates test signals, records the response through a Windows audio device, processes the captured data, and presents the result as engineering-focused plots.
Resonalyze is under active development. Treat its results as diagnostic measurements, not as certified laboratory data.
Download the latest ready-to-run build from GitHub Releases:
Resonalyze-vX.Y.Z-win-x64.zipfor most Windows computersResonalyze-vX.Y.Z-win-arm64.zipfor Windows on ARM
The release archives are self-contained and do not require a separate .NET installation. SHA-256 checksum files are provided with every release.
- Exponential sine sweep measurement
- Impulse response with JSON save/load
- Windows Wave and ASIO audio backends
- Playback/recording device selection with ASIO channel routing
- Frequency response
- Harmonic distortion and THD+N
- Phase response
- Group delay
- Fourier waterfall
- Burst Decay
- Live Spectrum using a continuous noise measurement
- Autocorrelation
- Microphone calibration correction
- Persistent, styled plot overlays with curve arithmetic
- Configurable FFT windows, smoothing, offsets, sweep timing, and playback channel
| Frequency response | Impulse response |
![]() |
![]() |
| Waterfall | Burst Decay |
![]() |
![]() |
To run a release build:
- Windows 10 or later
- Working Windows playback and recording devices
- Optional ASIO driver for low-latency audio interfaces
- A suitable loopback, microphone, or other measurement connection
The self-contained release archives include the required .NET runtime.
To build Resonalyze from source:
- Windows 10 or later
- .NET 10 SDK
- Visual Studio 2026 with the .NET desktop development workload, or the .NET CLI
Use conservative playback levels when connecting physical equipment. Begin with the output level turned down and verify the signal path before starting a measurement.
Clone the repository and open:
source/Resonalyze.sln
Or build and run it from the command line:
dotnet restore source/Resonalyze.sln
dotnet build source/Resonalyze.sln --configuration Release
dotnet run --project source/Resonalyze.csprojRun all application and deterministic DSP tests with:
dotnet test source/Resonalyze.sln -c ReleaseThe Release executable is generated at:
source/bin/Release/net10.0-windows/Resonalyze.exe
- Connect the output of the device under test to the selected input, directly or through a microphone and appropriate interface.
- Start Resonalyze and open the measurement settings.
- Select the audio backend, devices or ASIO channels, sweep duration, playback channel, and analysis parameters.
- Start a recording to generate and capture the exponential sine sweep.
- Select the required analysis view.
- Adjust smoothing, windows, offsets, and display options as needed.
- Use Save to preserve the captured impulse response for later analysis or comparison.
For acoustic measurements, microphone placement and room conditions strongly affect the result. For electrical loopback measurements, make sure signal levels and impedances are safe for both devices.
Resonalyze can run measurements through the standard Windows Wave backend or through an ASIO driver.
Use Wave for ordinary Windows playback and recording devices. The measurement settings dialog lets you choose the playback device, recording device, and playback channel.
Use ASIO for audio interfaces that provide a native ASIO driver. The measurement settings dialog lets you choose:
- ASIO driver
- ASIO input channel used for recording
- ASIO output channel pair used for playback
- Playback routing inside the selected output pair
ASIO output routing works as follows:
Monosends the same signal to both channels of the selected output pairLeftsends the signal only to the first channel of the pairRightsends the signal only to the second channel of the pairStereosends the signal to both channels of the pair
Before applying ASIO settings, Resonalyze checks whether the selected driver supports the current sample rate. The dialog also shows available driver diagnostics such as playback latency and, when exposed by the driver, frames per buffer.
Click ASIO Control Panel to open the driver's native control panel. Use it to configure driver-level settings such as buffer size, clock source, or sample rate when the driver requires those settings outside the application.
ASIO support depends on the installed driver. If a driver is already in use by another application or refuses the selected sample rate, Resonalyze reports the driver error before starting the measurement.
After a sweep measurement completes, click Save to store the current impulse response. Resonalyze proposes a timestamped file name such as:
Resonalyze-IR-2026-06-15_14-30-00.json
Files are saved as indented, human-readable JSON. Each file contains:
- Format and schema version
- Save time in UTC
- Sample rate and bit depth
- Sweep octave count and duration
- Playback channel
- Impulse-response peak index
- Real and, when present, imaginary sample values
Click Load to open a previously saved response. Resonalyze validates the file before using it, restores the associated measurement metadata, and opens the Impulse Response view. All analyses derived from an impulse response, including frequency response, phase, group delay, waterfall, Burst Decay, and autocorrelation, can then be generated without repeating the measurement.
Saving and loading are disabled while a measurement is running. The current
file format identifier is resonalyze-impulse-response, version 1. Files are
intended to remain readable by people, but editing sample arrays manually may
make a file invalid or produce misleading analysis results.
Each supported overlay view provides ten ordinary overlay slots and two calculated overlay slots. Click a numbered button in slots 1-10 to capture one of the curves currently shown on the plot. Overlay slots are stored automatically as human-readable JSON beside the executable:
overlays/<AnalysisMode>/overlay-01.json
For slots 1-10, the checkbox shows or hides the saved curve, the numeric
control applies a vertical offset, and ... opens the settings dialog. A slot
without a saved file remains disabled.
Slots 11 and 12 are reserved for calculations between any two ordinary
overlays from slots 1-10. They do not have capture or clear buttons. Instead,
the row displays the currently selected operation, such as A-B, A+B,
AVG, or |A-B|. Use ... to select source overlays A and B, choose the
operation, and configure the result appearance.
Ordinary overlay settings include:
- A user-defined name
- Line color, thickness, style, and opacity
- Optional
1/48,1/24,1/12,1/6, or1/3octave smoothing in frequency-based views - A Clear action that removes only that slot in the current analysis mode
Calculated overlay settings additionally include:
- Two source slots selected from overlays 1-10
- Operations
A - B,B - A,A + B,(A + B) / 2, and|A - B| - Blend operation with a user-defined crossover frequency and transition width
- Optional amplitude-space math for dB-based views, which converts both curves to linear amplitude before the operation and back to dB afterward
- Independent octave smoothing applied after the selected operation
Octave smoothing is available only for Frequency Response, Phase Response, Group Delay, and paused Live Spectrum. Impulse Response and Autocorrelation keep their original time-domain samples. Overlay JSON always stores the unsmoothed source points, so changing or disabling smoothing is lossless.
Calculated results use the same axes, units, zoom, and vertical pan as the ordinary overlays. Operations are applied to displayed Y values after source offsets. Consequently, addition and averaging on a decibel plot are arithmetic operations on dB coordinates, not physical summation of acoustic power.
Overlay files are separated by analysis mode and restored automatically when the application starts or the active view changes. Changes to any source overlay immediately update visible calculated overlays.
Ordinary overlay files use format resonalyze-overlay, version 4.
Calculated overlay files use format resonalyze-overlay-operation, version
4. Older overlay schema versions are intentionally not loaded.
Overlays are available in the Impulse Response, Frequency Response, Phase Response, Group Delay, paused Live Spectrum, and Autocorrelation views. The Clear button removes all plotted curves and hides every active overlay without deleting its saved JSON file. When Live Spectrum is running, Clear pauses it before clearing the plot.
Frequency-response correction is loaded from calibration.txt beside
Resonalyze.exe. In a source checkout, edit:
source/calibration.txt
The project copies this file to build and publish output automatically. The calibration data is applied during logarithmic resampling when Use Calibration is enabled in the frequency-response options. Replace the example data with the correction curve supplied for your microphone or measurement chain.
Resonalyze/
|-- source/ WinForms application and measurement orchestration
| |-- Options/ Measurement and visualization settings
| `-- Resonalyze.csproj
|-- dsp/ Reusable signal-processing library
| `-- Resonalyze.Dsp.csproj
|-- tests/
| |-- Resonalyze.App.Tests/ File-format and application tests
| `-- Resonalyze.Dsp.Tests/ Synthetic DSP tests
|-- .github/workflows/ CI builds and automated tagged releases
|-- global.json Pinned .NET SDK version
`-- README.md
The UI project handles audio-device interaction, measurement lifecycle, and
plot presentation. Resonalyze.Dsp contains reusable DSP operations such as
FFT analysis, windowing, calibration, smoothing, logarithmic resampling,
impulse processing, phase analysis, and group-delay calculation.
- Complete measurement-session save/load
- Plot and raw-data export
- Improved calibration workflow
- Versioned Windows installer
Bug reports, reproducible measurement cases, DSP corrections, and focused pull requests are welcome. When reporting a measurement issue, include:
- Audio interface and driver
- Sample rate and bit depth
- Measurement mode
- Relevant analysis settings
- Expected and actual behavior
- Screenshot or exception stack trace
Resonalyze is available under the MIT License.









