Thanks to visit codestin.com
Credit goes to github.com

Skip to content

A Fun little waterfall spectral analyzer, for RTL-SDR (and more to come), Inspired by GQRX, with Cyberpunk Vibes, written in Odin and Raylib.

License

Notifications You must be signed in to change notification settings

grplyler/spectro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spectro - A Fun Little SDR Spectral Analyzer

A Pretty Waterfall Spectral Analyzer, for RTL-SDR (and more to come), Inspired by GQRX, with Cyberpunk Vibes, written in Odin and Raylib.

alt text

Why?

  1. I wanted to learn Odin and build something useful with it.
  2. I work in RF/telecom and wanted a simple, focused waterfall display that just works, nothing too fancy.
  3. I like Raylib becayse it makes things easy.
  4. I like pretty, graphical things.
  5. The SDR community could use another general-purpose waterfall open-source spectrum analuzer with some style.

Building

  • Requirements:
    • Odin compiler brew install odin
    • librtlsdr brew install librtlsdr on macOS or apt install librtlsdr-dev on Linux

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/spectro

Build Script:

odin build spectro -o:speed -out:build/spectro

Running

./r or ./build/spectro to run the application.

Key Features Implemented:

  • 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

Upcoming Essential Features:

  • 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

Upcoming Extra Features:

  • 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

Hardcoded Configuration:

  • FFT Size: 2048 samples
  • Sample Rate: 2.048 MSPS
  • History: 1024 waterfall rows
  • Default Frequency: 101.1 MHz

Hacking on Spectro:

  • The codes kind of a mess, but it just wanted something quick, will clean up in the meantime.
  • Feel free to contribute!

Credits:

  • 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.

License

  • MIT License

About

A Fun little waterfall spectral analyzer, for RTL-SDR (and more to come), Inspired by GQRX, with Cyberpunk Vibes, written in Odin and Raylib.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published