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.

NavigateQuick Start · Architecture · Gallery · Examples · Guides

API ReferenceC API · Python: FFT · Python: Spectral · Python: Waveform · Python: Resample · Python: Filter · Python: Measurement · Python: DDC · Python: Accumulator


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: doppler-dsp.github.io/doppler

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.21.0.tar.gz (9.9 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.21.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

doppler_dsp-0.21.0-cp314-cp314-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.21.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

doppler_dsp-0.21.0-cp313-cp313-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.21.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

doppler_dsp-0.21.0-cp312-cp312-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.21.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

doppler_dsp-0.21.0-cp311-cp311-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.21.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

doppler_dsp-0.21.0-cp310-cp310-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.21.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.21.0-cp39-cp39-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.21.0.tar.gz
  • Upload date:
  • Size: 9.9 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.21.0.tar.gz
Algorithm Hash digest
SHA256 f08b43fa66500573034c49e8bad9d5af6fd56c7137a74d75163250d6bc79e356
MD5 fd42bd112cf03bb5292fb83505eb8584
BLAKE2b-256 1b4847f0e3935bacac007abc752d36cb4fc9591468537c4c9b98a882ee795311

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.21.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.21.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9ce5072f353b1369252d232b46e8d647f6340885f058991a93ca938a73bdf9dd
MD5 2e73d5a9f784528ca246f378a4c01e69
BLAKE2b-256 146c46fdb984a3b122ace872ba2f9485657c44ca6deb4d9239c30612cfbad25d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9d20a2b09d9343c473ccbb9ce1241f00672758fa0fa1e3ec36f7ed38fb93fa65
MD5 c16bf18fe9e61d247668841db81d955c
BLAKE2b-256 79372f1b01bb7d109389b3c864c3ad244cab1570f9269d0e54601f6523ceaa45

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b9b9664c8811abe7913ecfaf1574021ac90fba2a1bfa218a6c03f13e58e17b44
MD5 0fdb8fa794847156ba7b280da405b7ce
BLAKE2b-256 b92e3ff9658c2cdff8325cebb72ed739fb212096f380296f1807010f229f1840

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bc9cc2d912e493a14a80a4c87c876db607212d79b335691af2d0ec8e98a54df2
MD5 a269bce0c4f8eafa7f204f8dc77f3f36
BLAKE2b-256 07768d6368563a1cf6f37ec01d46fd83e59ff16b1a1f2db99cebc71c2da26edf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab359870066cb043e25a47f98b7ffc716a996553c7f88702c2082ad9f67666a1
MD5 c4dd4e6edb5691b1fc04ef6662e84fb6
BLAKE2b-256 f625faef0262117e1d3616cf64928407e795132c7a19c6138cdc2e130a305b97

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a1e62610542c8349079dee89e020e79ad2f181364d843bcf9b34ccc31851b208
MD5 8ec5514c487fb5347b720b5a4af3e6ed
BLAKE2b-256 1fd89e0ec2aada5ba7a1f982c58f92d61b5fd964435283ce8ec97eeeb0a2e017

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 234ee89339e0c040f7aa8eb231445bddb2d61e020ad9040792322311140f6b25
MD5 9d444f3b19b54ab9a69d61f17c23b35d
BLAKE2b-256 e904f2f170fed8a0c9f5fade768ca4e774472d796705a924579776695cbdbe42

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cf0d39187b587fc0e4a46fdca458a7f943827078c7f0b58ae469de7aa95a648e
MD5 b5fb725a9437e52a9d96743b04532667
BLAKE2b-256 d3a84471b01b8fceb868ad91bd0571c300bbbc114bc531c68290bb6f185b13d2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 57ce042594cac987f6abf8c071388d81a1eac95a3fd8fa880a701a4428c2a084
MD5 eef03dcba055f7b1a18d239af5b287e3
BLAKE2b-256 32dcfa2cb4387c83eb5f91b88ad4b930bcf81c1aae0fa2496c49c34a9c871c76

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 85b05fab8da796eab9b3f55a7cf9cf776f0bd73c0d415fa268560681395f2ac0
MD5 f5af736a4330e9d8a169031495e72172
BLAKE2b-256 988ff19b161cb3e44be94292b7fd246aff9e46867b7267394d4c7bb3d4bb21c8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e462d14676968d935f983401691c0ac70b38fe98b1988f0ae51f93276fc8d43
MD5 4e829313f56b316061f27cd379b301b7
BLAKE2b-256 cb2d590e9438611c4f6d8e8d811bdf759892d9e7c1d31ce2550d331b20826d27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.21.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e9a66fe3ab848d2eef6a7b3dffc8e25f6994751fefd365ea92446af2eed1fc7c
MD5 b3fd03ba8ea5cebce48c7e3fbad80f22
BLAKE2b-256 ed10453d86fa4553f16648892fc89a71afb2022934c802f483fc1bdf53626f0d

See more details on using hashes here.

Provenance

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