mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-11-21 19:31:54 -05:00
Cross-platform Software Defined Radio application. Uses SoapySDR, and has support for a wide range of dongles and strange pieces of hardware.
https://www.cubicsdr.com
cmake/Modules | ||
external | ||
font | ||
icon | ||
src | ||
.gitignore | ||
CMakeLists.txt | ||
CubicSDR.desktop | ||
cubicsdr.rc | ||
LICENSE | ||
README.md |
CubicSDR
Cross-Platform Software-Defined Radio Application
Utilizes:
- liquid-dsp (http://liquidsdr.org/ https://github.com/jgaeddert/liquid-dsp)
- FFTW (http://www.fftw.org/ https://github.com/FFTW/fftw3)
- RtAudio (http://www.music.mcgill.ca/~gary/rtaudio/ http://github.com/thestk/rtaudio/)
- Osmocom RTLSDR (http://sdr.osmocom.org/trac/wiki/rtl-sdr)
- LodePNG (http://lodev.org/lodepng/)
- BMFont (http://www.angelcode.com/ http://www.angelcode.com/products/bmfont/)
- Bitstream Vera font (http://en.wikipedia.org/wiki/Bitstream_Vera)
- OpenGL (https://www.opengl.org/)
- wxWidgets (https://www.wxwidgets.org/)
- CMake (http://www.cmake.org/)
Features and Status:
- Simple UI
- Devices
- RTL-SDR
- rtl_tcp client
- gr-osmosdr
- Basic Features
- Device Selection
- Bandwidth
- Color scheme
- Load/Save session
- Audio sample rate
- Device PPM
- Default preferences
- Audio defaults
- Device defaults
- Bookmarks
- History
- Run as rtl_tcp server and visualize control
- Neat Visuals
- 2D visuals
- Y Scope
- Spectrum
- Waterfall
- Add faint grid for sense of scale
- Audio Spectrum
- X/Y Scope
- Indicate outer spectrum edges when zoomed
- 3D visuals
- I/Q helix
- 2D visuals
- Demodulation:
- Basic modular expansion
- Multiple demodulators per IQ stream
- Audio device selection
- Modes
- FM
- FM stereo
- AM
- LSB
- USB
- DSB
- I/Q
- Controls
- Display Frequency and allow manual adjustments
- Allow selection of demodulation type
- Display separate zoomed-in view of current waterfall and spectrum, allow adjustments
- Display signal level and allow squelch control
- Display audio output selection
- Volume control
- Direct frequency input
- Mute
- Waterfall speed
- RTL-SDR Gain
- Basic Input Controls
- Drag spectrum to change center frequency
- Hold shift and click on waterfall to create a new demodulator
- Clicking waterfall adds new demodulator when none visible
- Drag center of demodulator on waterfall to change frequency
- Drag edge of demodulator on waterfall to change bandwidth
- Double-Click to move demodulator to frequency within it's current range
- Hold alt and drag range on waterfall to set demodulator frequency + bandwidth
- Hold alt+shift and drag range on waterfall for a new demodulator
- Hover demodulator on waterfall and press 'space' to toggle stereo
- Hover demodulator on waterfall and press 'd' or 'delete' to delete it
- Keyboard arrows adjust frequency, shift for faster change
- Undo / Redo action
- I/Q Recording and playback
- Recording
- Record waterfall output to PNG file chunks of desired height
- Record I/Q input data
- Simultaneously record demod decimated I/Q and audio
- Playback
- Recording
- Audio
- Recording
- Implement digital demodulation supported by liquid-dsp: (http://liquidsdr.org/doc/modem.html)
- Demodulator Lab
- Demodulator I/Q input filtering
- Audio output filtering
- Toggle current demodulator exclusively into "Lab" mode
- Additional visualizations for audio and I/Q stream
- Audio Spectrum
- Constellation / X-Y Scope
- Digital demodulation status and controls
- Demodulator AGC, Equalization controls
- Lock AGC and Equalization when digital lock obtained
- Digital output
- Output console
- Capture file (auto?)
- Network output
- Block device output
- Additional visualizations for audio and I/Q stream
- Digital modes available to implement
- PSK
- DPSK
- ASK
- QAM
- APSK
- BPSK
- QPSK
- OOK
- SQAM
- Star Modem
- MFSK
- CPFSK
- Demodulator Lab
- Optimization
- Eliminate large waterfall texture uploads
- Update visuals to OpenGL 3.x / OpenGL ES
- Resolve constant refresh on visuals that don't change often
- Resolve all driver/platform vertical sync issues
- Group and divide IQ data distribution workload instead of 100% distribution per instance
Advanced Goals and ideas:
- Design a plan for expansion via modules (dylib/dll/lua)
- Support shell-based stdin/stdout tools for direct output/playback to/from CLI audio processing apps (i.e. DSD on OSX)
- Update visuals to support OpenGL ES
- Basic demodulator filter(s) that can be enabled and tweaked visually
- Support multiple simultaneous device usage
- Categorize devices by antenna connections
- Allow locked frequencies to activate unused devices to continue demodulation on same antenna
- Integrate LUA
- Expose liquid-dsp functionality
- Scriptable liquid-dsp demodulation
- Scriptable digital demodulation output handlers
- Create block output devices on *nix?
- Create socket outputs?
- Visual outputs?
- Take control of additional devices and spawning new demodulators (i.e. trunkers)
- Script manager / live editor
- Provide scriptable liquid-dsp modulation for trancievers?
- Allow scripts to launch/run headless (no UI)
- "PVR" like mode with waterfall time shifting
- L/R and surround-sound balance settings for separating and listening to mono streams
- Add tool for converting decimated I/Q recording to video
- Select video features such as title/demodulation/scope/waterfall/etc
- Render to video from GL frames->ffmpeg/mencoder /w demodulated audio
- Accessability / Control
- USB/MIDI control surfaces
- Joystick / gamepad input
- Vibration / force-feeback
- Investigate compilation via emscripten using rtl_tcp for input
- Create web server+rtl_tcp bundle for embedded devices
- Use emscripten compiled CubicSDR via embedded web server
Target Platforms:
- OSX
- Windows
- Linux
- HTML5
License:
- GPL