Skip to main content

Dead-simple, ultra-fast digital signal processing.

Project description

doppler

Dead-simple, ultra-fast digital signal processing.

CI Docs PyPI Python License: MIT C99 Rust uv Ruff

doppler is a C99 DSP library: NCO, FIR filter, FFT, polyphase resampler, DDC, and ZMQ-based signal streaming. Python and Rust wrap the same C core — no second implementation, no divergence, full SIMD throughput from any language.

Why it's built this way

Every algorithm lives in C exactly once. The Python layer is type conversion and lifetime bridging — a few hundred lines of glue, not a reimplementation. Bugs get fixed once, benchmarks reflect real hardware, and a C transmitter talks to a Python subscriber without surprises.

Performance

On a Ryzen 7 AI 350 (-O2): NCO raw accumulator ~15 GSa/s, LO CF32 ~1.8 GSa/s, FIR CF32 ~900 MSa/s, FFT CF32 (N=4096) ~180 MSa/s, polyphase resampler (2× decim) ~70 MSa/s. Run make bench to measure on your hardware.

Quick start

Python

from doppler.spectral import FFT
import numpy as np

X = FFT(1024).execute(np.random.randn(1024).astype(np.complex64))

C

#include "fft/fft_core.h"

dp_fft_t *fft = dp_fft_create(1024, -1, 1);
dp_fft_execute_cf32(fft, in, 1024, out);
dp_fft_destroy(fft);

Build

jbx install-deps        # install system deps (detects OS/distro)
make                    # C library
make pyext              # + Python bindings
make test               # CTest suite
make bench              # benchmarks

Docs

Full docs at doppler-dsp.github.io/doppler — Quick Start, Architecture, API Reference, Examples.

Licensing

MIT. The default build uses pocketfft (BSD-3-Clause). Build with -DUSE_FFTW=ON for FFTW (LGPL).

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

doppler_dsp-0.3.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (781.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.3.7-cp314-cp314-macosx_14_0_arm64.whl (617.0 kB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.3.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (790.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.3.7-cp313-cp313-macosx_14_0_arm64.whl (617.0 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.3.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (780.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.3.7-cp312-cp312-macosx_14_0_arm64.whl (617.1 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

File details

Details for the file doppler_dsp-0.3.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.3.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b34cfd326107c1adc91b71da8f890d31c8027e0f610363e15a5a29afbff2fdfc
MD5 7c33d02013125d7bda8f240d58aa11bd
BLAKE2b-256 2323fabd0cfac6994c1bc4f5d6e0d0724936e9e6ae4591db71f7d464952cca80

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.3.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.3.7-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.3.7-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a1d8f336245f3bcdc036e0c6cb70d12fbbe24371f935fa5a896cc1903a8492fc
MD5 3261d433aa4f5c415807194ef7714041
BLAKE2b-256 ef462569f56b6b30137cfaaa6e2f18cca168fbcaa81ed79a020be49e605d0fb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.3.7-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.3.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.3.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4c626f87b00e261b7381dde6b13472b300b2273ab186812931856508b7e02433
MD5 a067271513d16c77ebdb78dfe77dc1a9
BLAKE2b-256 be4260230f942a981a4a61b0f29cfe65bfbf3957f43e2bb3a3ba247087288eeb

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.3.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.3.7-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.3.7-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 811190eb82460b8e2e21af3fd0aa3166a8e2cc463e54824407a6c10024c89b4f
MD5 2d6daeb5d9ad40b0d484cca8f8cee4be
BLAKE2b-256 333f5491dbea7a7d660f65202bbd67175953c916eac6cbb1499ad03814769b44

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.3.7-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.3.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.3.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4091c2b3e7c58ad6edafd553fbb0643ba9236060178845413ec7bd0fe602e312
MD5 4e33d720c092e02947f8d12520aca11e
BLAKE2b-256 88f77e5704e50366efbeba5e12cd647d055ca54055eadc1bfd0f7e6306207692

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.3.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.3.7-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.3.7-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 154601854e05172d009ec6eedad6460aa7e9322ab1213c0fa6397b2bc033ccd4
MD5 f178627b451c0fbe7c0421c61f995820
BLAKE2b-256 ab006a259dbbd04e5ff8fbe598c302582b5445696939c37de08e7ee8486084bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.3.7-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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