Skip to main content

dsproc: a powerful digital signals processing toolkit

Project description

dsproc logo

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.

dsproc logo

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

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dsproc-0.1.1.tar.gz (929.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dsproc-0.1.1-py3-none-any.whl (41.9 kB view details)

Uploaded Python 3

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

Hashes for dsproc-0.1.1.tar.gz
Algorithm Hash digest
SHA256 bd6b0f6d787020d469d805e95095bc514fa86ad56ba63f64d9805f2af16c62c0
MD5 d65ef7b05bb3efaaa0d4e115f9573565
BLAKE2b-256 13844c9143e47cdc1d4a02f8d4651c9c2a7dd37f1a1e0ffc7b8bf3703636d5cf

See more details on using hashes here.

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

Hashes for dsproc-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 35848abfb61e7ff81e204c9fce4a7e0b275f5d1a53e5e758942c2951bbbf5c34
MD5 08d2cafb8f0ef9295eb5f2b1ca2a9f9c
BLAKE2b-256 e551f9b35a372a92ebe78ad866e65fdcdf29b9ed3724e6bb181c9daa85665bac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page