dsproc: a powerful digital signals processing toolkit
Project description
dsproc: a powerful digital signals processing toolkit
What is it?
dsproc is a Python package that enables the analysis and processing of digital radio signals using an intuitive and approachable framework. It supports end to end digital communcations, which gives users the ability to fully encode and modulate data into radio waves of all types.
Main Features
Here are some of the things you can do with dsproc:
- Perform end to end digital signal processing! Compress, randomise, error correct, interleave and then modulate data into a complex wave ready for transmitting through your software defined radio (SDR) of choice.
- Supports a variety of modulation and demodulation types such as ASK, FSK, QAM, MFSK, and PSK using symbol sets of arbitrary size.
- Create custom QAM constellations using a simple click gui.
- Use clustering to aid in automatic demodulation of FSK, ASK and QAM signals.
- Create spectrum art by converting images to waves and transmit them via SDR!
Minimal example
# Import the library
import dsproc
# Read in a file
message = dsproc.Message(fn="my_picture.png")
# The file is current stored as bits. We could leave it that way and transmit one bit per symbol,
# but instead lets convert the message to symbols. Here I will convert to symbols using 2 bits per symbol,
# this gives us four possible symbols, e.g.
# Symbol | Bits
# ---------------------
# 0 | 00
# 1 | 01
# 2 | 10
# 3 | 11
# Convert to symbols
message.symbolise(bits_per_symbol=2)
# Now we want to create a modulation object which we will use to write our bits to a signal
# fs = the sampling frequency, which is how many times per second we are creating samples for our radio wave
# sps = samples per symbol, how many samples we will allow per symbol transmitted. minimum is 1 but it's best to do
# at least 4.
radio_wave = dsproc.Mod(fs=10000, message=message.data, sps=8)
# Apply Amplitude Shift Keying (aka amplitude modulation) to our radio wave. This encodes the radio wave so each
# symbol is represented by a unique amplitude
radio_wave.ASK()
# The wave can be viewed with various plotting methods
radio_wave.amp_view()
radio_wave.time()
# Save the wave as 64 bit complex numbers. This file can then be used directly with GNU radio or Software defined radio
# software. It's best to save the file with the sample rate (fs) in the name because you will need this number for
# transmitting this wave.
radio_wave.save_wave("my_picture_wave_fs=10000_sps=8")
Installation
To install dsproc and it's dependencies I recommend using the pip installer:
pip install dsproc
Dependencies
- NumPy - Adds support for multi-dimensional arrays
- SciPy - Filter and clustering functions
- matplotlib - Plotting
Testing
I use hatch, 'hatch test --doctest-modules --ignore="Examples/*', to run all the tests and the doctests while ignoring the Examples folder. Otherwise, tests are in the tests folder, and many functions have doctests.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dsproc-0.1.1.tar.gz.
File metadata
- Download URL: dsproc-0.1.1.tar.gz
- Upload date:
- Size: 929.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd6b0f6d787020d469d805e95095bc514fa86ad56ba63f64d9805f2af16c62c0
|
|
| MD5 |
d65ef7b05bb3efaaa0d4e115f9573565
|
|
| BLAKE2b-256 |
13844c9143e47cdc1d4a02f8d4651c9c2a7dd37f1a1e0ffc7b8bf3703636d5cf
|
File details
Details for the file dsproc-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dsproc-0.1.1-py3-none-any.whl
- Upload date:
- Size: 41.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35848abfb61e7ff81e204c9fce4a7e0b275f5d1a53e5e758942c2951bbbf5c34
|
|
| MD5 |
08d2cafb8f0ef9295eb5f2b1ca2a9f9c
|
|
| BLAKE2b-256 |
e551f9b35a372a92ebe78ad866e65fdcdf29b9ed3724e6bb181c9daa85665bac
|