https://github.com/luigifcruz/radio-core
📔 Python based DSP for CyberRadio and PyRadio. Accelerated with #cuSignal and Numba.
https://github.com/luigifcruz/radio-core
cusignal numba python radio-core
Last synced: 7 months ago
JSON representation
📔 Python based DSP for CyberRadio and PyRadio. Accelerated with #cuSignal and Numba.
- Host: GitHub
- URL: https://github.com/luigifcruz/radio-core
- Owner: luigifcruz
- License: gpl-3.0
- Created: 2020-01-17T23:26:48.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-03-17T03:48:15.000Z (over 3 years ago)
- Last Synced: 2025-03-08T09:48:11.246Z (8 months ago)
- Topics: cusignal, numba, python, radio-core
- Language: Python
- Homepage:
- Size: 54.7 KB
- Stars: 56
- Watchers: 8
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 📻 Radio Core
### Real-world signal processing functions for Python.## Features
- ⚙️ Compatible with the majority of SDRs via [SoapySDR](https://github.com/pothosware/SoapySDR).
- ⚡️ Accelerated on Nvidia GPUs with CUDA via [CuPy](https://github.com/cupy/cupy/) and [cuSignal](https://github.com/rapidsai/cusignal).
- 🚀 Runs smoothly in the Raspberry Pi 4, Nvidia Jetson, and Apple Silicon.## Functions
### Analog
- **PLL**: Clock-recovery and phase estimation for real-valued signals.
- **WBFM**: Demodulation of wideband FM stations with Stereo Support. Supports de-emphasis.
- **MFM**: Demodulation of wideband FM stations without Stereo Support. Supports de-emphasis.
- **FM**: Demodulation of FM transmissions.
- **Deemphasis**: De-emphasize audio.
- **Decimate**: Resample signal.
- **Bandpass**: Filter signal with bandpass window.### Tools
- **Tuner**: Channelize the input data into smaller channels.
- **Ringbuffer**: Zero-copy variable length circular buffer implemented in Python.
- **Carrousel**: Zero-copy fixed length circular buffer implemented in Python.
- **Chopper**: Divide a larger array into smaller fixed side elements.
- **Buffer**: Provide an array allocated in the GPU or CPU.## Examples
- **Receive FM**: Receive and play single wideband FM radio station.
- **Multi FM**: Receive multiple wideband FM radio stations. Broadcast audio via ZeroMQ.## Installation
### System Dependencies
- SoapySDR Base ([Repo](https://github.com/pothosware/SoapySDR))
- SoapySDR Modules ([LimeSuite](https://github.com/myriadrf/LimeSuite.git), [AirSpyOne](https://github.com/pothosware/SoapyAirspy), [AirSpyHF](https://github.com/pothosware/SoapyAirspyHF), [PlutoSDR](https://github.com/pothosware/SoapyPlutoSDR), [RTL-SDR](https://github.com/pothosware/SoapyRTLSDR))
- Python 3.7+
- PulseAudio#### Ubuntu/Debian
After installing the base SoapySDR and its modules, install the direct dependencies with `apt`:
```bash
$ apt install libpulse-dev libsamplerate-dev libasound2-dev portaudio19-dev
```### Python
#### CPU
```
$ python -m pip install git+https://github.com/luigifcruz/radio-core.git
```
#### GPU (CUDA)
```
$ python -m pip install "git+https://github.com/luigifcruz/radio-core.git#egg=radiocore[cuda]"
```## Validated Radios
- AirSpy HF+ Discovery
- AirSpy R2
- LimeSDR Mini/USB
- PlutoSDR
- RTL-SDR
- SDRPlay## Hacking
If you are interested in the core DSP, you are in the right place! Feel free to tinker with the code and make your own application. If you just want to use to listen to some good music, try the [CyberRadio](https://github.com/luigifreitas/CyberRadio) Desktop App.