Skip to main content

Dead-simple, ultra-fast digital signal processing.

Project description

doppler — signal, shifted

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 = np.random.randn(1024).astype(np.complex64)
X = FFT(1024).execute_cf32(x)

C

#include <fft/fft_core.h>

fft_state_t *fft = fft_create(1024, -1, 1);  /* n, sign, nthreads */
fft_execute_cf32(fft, in, 1024, out);        /* in,out: float complex[1024] */
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 core C library is pure C99 and links only -lm. Its FFT uses the vendored pocketfft (BSD-3-Clause) for double precision and arbitrary sizes, and the vendored PFFFT (Pommier/FFTPACK, BSD) for the native single-precision SIMD path. The optional ZMQ stream component (libdoppler_stream) vendors libzmq (MPL-2.0).

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

doppler_dsp-0.16.0.tar.gz (9.1 MB view details)

Uploaded Source

Built Distributions

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

doppler_dsp-0.16.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.0-cp314-cp314-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.16.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.0-cp313-cp313-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.16.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.0-cp312-cp312-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.16.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.16.0-cp311-cp311-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.16.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.16.0-cp310-cp310-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.16.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.16.0-cp39-cp39-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file doppler_dsp-0.16.0.tar.gz.

File metadata

  • Download URL: doppler_dsp-0.16.0.tar.gz
  • Upload date:
  • Size: 9.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for doppler_dsp-0.16.0.tar.gz
Algorithm Hash digest
SHA256 c3d1bcc9e94af90da17b7b2982cf4cf0836e35b9e677f21040792eccd2b47691
MD5 1d53ccaf8ace5804d37452238fccdf44
BLAKE2b-256 cd0a3117a4f7f4628cc472aad4b51e08c5c536800d86a7473de0ea2d8ebb24fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.0.tar.gz:

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.16.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5a0b0d812f8e774391bf992354d7f90185917f0c28da328989fc6434db943b04
MD5 a10722820cade9d21e1a4023472f7b73
BLAKE2b-256 4f9cd7b985ec822abaaf4b836b9902cd0f989b64b6494e4bcf5514cd7f16b4f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4f421510f0e2edd7c76ba397de32e5d67628a28fabc1280137263e0e3d5293d7
MD5 a76127b1cfeaae351026c18fba16d178
BLAKE2b-256 28720cf24eb2609d527f58e3b38d7c28f07233b4ecbd0a9f05ae8ffcc5c39fac

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.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.16.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16d91d9e28b3916cb33e55ce09d56f15ee662588ff04c764646c514f3e4b0a4f
MD5 dce7116661c13e6a334af469f144b7a2
BLAKE2b-256 980a86a85ec1fc904e7e8dc2b6dbea714571222dbc1441d4b3442596254a025c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3291043f832f7d87094ba32101be51fa9d22a44b0705f6386bfa7aee2e730ea5
MD5 e4ea108a7363b969412ddcf0d00092a5
BLAKE2b-256 1ce6dbb02e948b1314f5a40d443475351b3b063377019cbe480ef23c55cf57e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.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.16.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39ce801fa58e239a69e264067e57cdd559794810bbd98ab221a89082a0575a90
MD5 b73e74211c5e0db696903fa8abd2bddf
BLAKE2b-256 91bc41b6cc4ed1323c4858f38652ec00d01e8b55616cf93b480f2a50f15aef67

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5b74d17a37947cf43e34fa650fb4301684abbebba85b14524fc5fabb71a279e0
MD5 892188be9aeb1e159fea3139389d68cc
BLAKE2b-256 c1d0ef7bb5182c41aa9b83b7008ce1b2743b7315bfa9abe1342ee7a327833d0b

See more details on using hashes here.

Provenance

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

File details

Details for the file doppler_dsp-0.16.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95e37138285011b5f2ce811c4ec9e79730eab9a5cd2225e632833739cad7c1ae
MD5 15fa6e02a2557212e5927cb2d04308e6
BLAKE2b-256 3ab0e792605236d553fe0c079c0980dd48aa976b553b2b24daf1f785952ba775

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.0-cp311-cp311-manylinux_2_27_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.16.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 94f7c22318fcf3c108631d0d74e52f5ee68cead3b96fa314de949e2deee63b88
MD5 3a49d6896f3f6643bab8a3f51b50b836
BLAKE2b-256 83c707198f9af1ebaab8b9fae5aeaea779e6bfaef8445df861e56eb74220cc0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.0-cp311-cp311-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.16.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eaceb9f2f315c535dc0b6db70a3a555b1b0021b7d45d2dfc189dbf48d7b40ac8
MD5 e0407ae3d2c8804328c2412a69d54264
BLAKE2b-256 df0ae89712ea998bbcb1ce36ee2b53f549245a0ab2559e4db28ba81d773d5ed1

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.0-cp310-cp310-manylinux_2_27_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.16.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0357fb09d7150ef21f2537c5b86234b788ee6fa01cd51e086277343d7f18fb50
MD5 28835e64502134b295879859814408d7
BLAKE2b-256 489c1e35c736916c9e375d0d71065f73cde2ca8d543c43ef3fe7129bc37f1926

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.0-cp310-cp310-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.16.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8d3ef7147a38e232e336695838bae2e9668dd8eef62ea20daf7fbe478c22b8c1
MD5 a4a110380705633f3b1d9458118c2e3f
BLAKE2b-256 e5b3e03749047d51feb71dccc0f4d7366122defbd5d94e0cbda147f76132d550

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.16.0-cp39-cp39-manylinux_2_27_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.16.0-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.16.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a87b4864d979a9f028a2576402e5a9b97dff3675278b2c9aca7f7f31fd4647f0
MD5 317de1ebf5c2c768063e076a485dd5f9
BLAKE2b-256 a05539233703ddf96ab838d4f57631abce424f67f58712b5c0cfdca1a912e41a

See more details on using hashes here.

Provenance

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