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.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (823.3 kB view details)

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

doppler_dsp-0.4.0-cp314-cp314-macosx_14_0_arm64.whl (653.0 kB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.4.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (823.2 kB view details)

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

doppler_dsp-0.4.0-cp313-cp313-macosx_14_0_arm64.whl (653.0 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (823.4 kB view details)

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

doppler_dsp-0.4.0-cp312-cp312-macosx_14_0_arm64.whl (653.1 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

File details

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

File metadata

File hashes

Hashes for doppler_dsp-0.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0c4f346188c751db90475be25e01c6ecceef25df0d1453b7a7cfa37e07e3ee6
MD5 29db2aa1d46120cbe9910acee54a7cd9
BLAKE2b-256 4ad10a4a3406ab090a8f2a0256e1c9445f519ec850bb19133c630af072df7f29

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.4.0-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.4.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.4.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 fe249c8fa1a17b0ccccb73a52199426210d245bef7e5a0244c29df1156b4bd31
MD5 e25aeca282708681aa7121ec7173f42d
BLAKE2b-256 425815b974e607be107f2a9c1424e5d62d0589ea809e8f132d209b50ee891d3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.4.0-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.4.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.4.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c4611d021d4afbfcaae27d853a551411825b95926ba78495bc0153649f3f5607
MD5 cf83b5ff697239ff2f07c34f9cac5443
BLAKE2b-256 76676ca6707c8b6100bc609d8cbe0e6a65c2c75f1ab4ee09944f367a8f9be6d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.4.0-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.4.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.4.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0f061e38c16c9b167f193dec2ef624ce10b90eff23be8e6b95ee778f8067c9e7
MD5 56f44b920fddfd7b740a6cf08a59e61d
BLAKE2b-256 71f58d100fe3a75bdf31635cbb4ed46fa16aa8bfa0823df4bdf78241aa7804d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.4.0-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.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 937b6899881333fac8f5618914336888c6122aef40cb962b91b370479cb1eba0
MD5 7cbd94e58f35a37f735e0685fc0658b6
BLAKE2b-256 c2cf42c2855d020e97316a93feb5570cb50a8fa3a52ce2d9797d1995d8e0e652

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.4.0-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.4.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.4.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2271c122f0ff804e7f07181dfe8df068112d0304155db1edfa474e1c29a36f8a
MD5 443fe8322f4b767ef5a9a6fac9473e5c
BLAKE2b-256 7b57fa63a6226b30846cffbe5f71ae8c96af9f5ca52551ec8761a272759696a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.4.0-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