Windows desktop app (C#, WinForms, .NET 6, ScottPlot) that
- generates CW, AM, DSB-SC, SSB, FM, PM, ASK, 2-FSK, BPSK, QPSK, 8-PSK, 16-QAM and 64-QAM with adjustable carrier, message, deviation/index, symbol rate and SNR;
- displays the time-domain signal, FFT spectrum, waterfall and I/Q constellation in real time;
- analyzes the signal blind: modulation type, carrier frequency, 99 % bandwidth, symbol rate, SNR – with the reasoning shown;
- demodulates it (envelope, coherent, SSB product, FM discriminator, PM phase detector), plots the recovered message, plays it or saves it as WAV; a WAV recording can be used as the message;
- loads/saves WAV files and has a built-in Monte-Carlo self-test.
Requires the .NET 6 SDK (or Visual Studio 2022 with the ".NET desktop development" workload – open SdrLab.sln).
dotnet run --project src/SdrLab.App -c Release
dotnet test
powershell -ExecutionPolicy Bypass -File publish.ps1
Runs the tests, then produces publish/SdrLab-1.0.0-win-x64.zip containing a self-contained single-file
SdrLab.exe (Windows 10/11 x64, no .NET installation needed).
| Path | Content |
|---|---|
src/SdrLab.Core |
Signal generator, FFT, blind analyzer, demodulator, audio message, WAV I/O, validation runner (no UI dependencies) |
src/SdrLab.App |
WinForms UI |
tests/SdrLab.Tests |
xUnit: Monte-Carlo detection accuracy, robustness scenarios, speech messages, demodulators, carrier, bandwidth, symbol rate, FFT |
docs/UserGuide.md |
How to use the app + modulation primer |
docs/Algorithms.md |
How detection works and how it was validated |
Everything runs locally; the app makes no network connections.