A Pretty Waterfall Spectral Analyzer, for RTL-SDR (and more to come), Inspired by GQRX, with Cyberpunk Vibes, written in Odin and Raylib.
- I wanted to learn Odin and build something useful with it.
- I work in RF/telecom and wanted a simple, focused waterfall display that just works, nothing too fancy.
- I like Raylib becayse it makes things easy.
- I like pretty, graphical things.
- The SDR community could use another general-purpose waterfall open-source spectrum analuzer with some style.
- Requirements:
- Odin compiler
brew install odin - librtlsdr
brew install librtlsdron macOS orapt install librtlsdr-devon Linux
- Odin compiler
Clone the repo and initialize submodules:
git clone https://github.com/grplyler/spectro.git
cd spectro
git submodule update --init --recursive
./b # or odin build spectro -o:speed -out:build/spectroBuild Script:
odin build spectro -o:speed -out:build/spectro./r or ./build/spectro to run the application.
- RTL-SDR Integration: Continuous sample acquisition from RTL-SDR device
- GPU Accelerated: Efficient scrolling effect using fragment shader and ring buffers
- Click to Tune: Click on the waterfall to retune the SDR to the clicked frequency
- Peak Visualization: With variable hold time
- FFT Processing: In-house real-time FFT computation (probably chatgpt fueled garbage I don't really understand, but hey, its still 6x faster than KissFFT)
- Sick Frequency Control: Frequency control with digits (also inspired by GQRX)
- Pretty Waterfall: Scrolling spectrogram display using Raylib
- Spectrum Line Plot: Basic Stuff
- Color Mapping: Viridis colormap for dB-to-color conversion
- Cyberpunk UI: Yes
- handle FFT size changes
- handle samplerate changes
- handle gain changes (AGC switching)
- handle device changes
- binary builds for macOS, Linux, Windows
- save/load settings
- WBFM demodulation
- IQ Sample Recording
- Frequency Bookmarks
- Theme Changer
- Colormap Changer
- SoapySDR support (for lots more SDR Support)
- Better IQ sample playback (Sorry by GQRXs is so unintuitive and finicky)
- Multiple SDRs working in sync to capture wide spectrum
- Frequency Bookmarks
- Audio recording
- Audio live output
- Zoom feature for waterfall
- FFT Size: 2048 samples
- Sample Rate: 2.048 MSPS
- History: 1024 waterfall rows
- Default Frequency: 101.1 MHz
- The codes kind of a mess, but it just wanted something quick, will clean up in the meantime.
- Feel free to contribute!
- KissFFT for being an implementation Benchmark for speed and testing before I wrote my own FFT code.
- Raylib for making graphics easy and fun.
- Odin for being a fun (and faster) language to learn and use.
- The SDR community for inspiring this project and providing the RTL-SDR hardware.
- GQRX
- The (poor) LLMs that I probably abused in the process of writing this, getting angry, then having to figure it out myself anyway.
- MIT License