Daniel Estévez 4eff54ba42 Improve spectrogram time alignment
Currently, SpectrogramPlot::getLine() uses the sample parameter to
determine the index of the first sample that is used to calculate
the FFT for a particular spectrogram line. Since the FFT is in some
sense an average of fftSize samples, this causes features (such as
the start and end of packet bursts) to appear somewhat sooner in
the spectrogram compared to their actual locations in the IQ file.

This improves the time alignment of the spectrogram plot by making
sample refer to the middle sample of the FFT (so the samples used
to compute the FFT start at sample - fftSize / 2.

For the beginning of the file we need to make an exception, because
if we try to fetch samples before the beginning of the file, then
inputSource->getSamples() returns nullptr. SpectrogramPlot::getLine()
handles this gracefully, but an ugly red bar appears at the beginning
of the file when the FFT size and zoom are large. To solve this, we
cheat and force the FFT to start at the beginning of the file. To
be more precise we could pad the beginning with zeros instead.

Signed-off-by: Daniel Estévez <daniel@destevez.net>
2023-10-16 15:37:51 +01:00
2023-10-16 15:37:51 +01:00
2015-08-22 09:56:12 +01:00
2021-03-01 15:06:04 +00:00
2015-08-24 18:00:28 +01:00
2022-10-18 17:09:25 +02:00
2016-07-03 23:07:46 +01:00

inspectrum

inspectrum is a tool for analysing captured signals, primarily from software-defined radio receivers.

inspectrum screenshot

Try it

Prerequisites

  • cmake >= 3.1
  • fftw 3.x
  • liquid-dsp >= v1.3.0
  • pkg-config
  • qt5

Build instructions

Build instructions can be found here: https://github.com/miek/inspectrum/wiki/Build

Run

./inspectrum [filename]

Input

inspectrum supports the following file types:

  • *.sigmf-meta, *.sigmf-data - SigMF recordings
  • *.cf32, *.cfile - Complex 32-bit floating point samples (GNU Radio, osmocom_fft)
  • *.cf64 - Complex 64-bit floating point samples
  • *.cs32 - Complex 16-bit signed integer samples (SDRAngel)
  • *.cs16 - Complex 16-bit signed integer samples (BladeRF)
  • *.cs8 - Complex 8-bit signed integer samples (HackRF)
  • *.cu8 - Complex 8-bit unsigned integer samples (RTL-SDR)
  • *.f32 - Real 32-bit floating point samples
  • *.f64 - Real 64-bit floating point samples (MATLAB)
  • *.s16 - Real 16-bit signed integer samples
  • *.s8 - Real 8-bit signed integer samples
  • *.u8 - Real 8-bit unsigned integer samples

If an unknown file extension is loaded, inspectrum will default to *.cf32.

Note: 64-bit samples will be truncated to 32-bit before processing, as inspectrum only supports 32-bit internally.

Features

  • Large (100GB+) file support
  • Spectrogram with zoom/pan
  • Plots of amplitude, frequency, phase and IQ samples
  • Cursors for measuring period, symbol rate and extracting symbols
  • Export of selected time period, filtered samples and demodulated data

Contact

Description
No description provided
Readme GPL-3.0 1.7 MiB
Languages
C++ 96.3%
CMake 3.7%