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 NATS-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 · 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 stream component (libdoppler_stream) vendors nats.c (Apache-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.28.0.tar.gz (11.5 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.28.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.28.0-cp314-cp314-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.28.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.28.0-cp313-cp313-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.28.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.28.0-cp312-cp312-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.28.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.28.0-cp311-cp311-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.28.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.28.0-cp310-cp310-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.28.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.28.0-cp39-cp39-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.28.0.tar.gz
  • Upload date:
  • Size: 11.5 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.28.0.tar.gz
Algorithm Hash digest
SHA256 bca6384749d06ea4e16563498582b31b9c97c4802c3dc0c7b8e1087066ea7982
MD5 251c8c8297ff574ac9c450a7b697f4a3
BLAKE2b-256 5d1241156277931bd35aa3ac13a8b677bc1330c647a883c0791fa9b2d2d705b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8eafece3bfd31833c3b147b069022f4365e5700bcb374bed6cd1c612e5760aed
MD5 c093b129c67b6a8819a61d3b2cfb4cd7
BLAKE2b-256 fee563249e8145fe291e26f10691fa40a204f7a2131014bef7ed9d3c9d898a99

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8c1f2e8b2556827f145750674291c5a67fb9faa26a11cc97331c5269c9fa1db3
MD5 026a50114af65c042b36a93ffe381e16
BLAKE2b-256 b50bdb3041e8e46a47ea12c2c8242e56ebff458a12905a279a16d1a01cc9eca7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9748ade8bacce8a1d56509069b87763b15c43599bf22a22b34e16e6470ad68d3
MD5 9d8a78094ba9c3cacde6d9a691f5e4f8
BLAKE2b-256 82ed17802aaef139b6ee4813843b9c058f323c3df61c39a7c83c014409ee86a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b06f55aa074547baedf53da58ee6411b44da61745cb249071663751123494bab
MD5 cd35191ea9133ef15b86afd13fa11dcb
BLAKE2b-256 9786e7622ba101c929d1a5d6026db075ad5c741a98a264df3780675038343b79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d37281fe60b065174592d2946abd0ae8703617c433592811b1875f8d9c33d76e
MD5 df42d8b329a2b70996f84f622967498f
BLAKE2b-256 5504115cd94a7009e5f729aa1d599bbb6d5cf45a760191dc01c1d4f336ed2a18

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c45d4a00cd477c4dc868d5eb128e31dc713babefb6b5441140163f6db368ede4
MD5 8d2faed38f091ccc32c22cf528e253cd
BLAKE2b-256 67ef47408eb07fd7d8943c3430d7ea53c2b00f92f2f25b051479772fbf9073d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e736374b52ebe05e84b5ed5c300ee93dbd4dc83bc9f26f92c250bd7015ffe7e6
MD5 978aea79dd100bc62998e75dec8667ac
BLAKE2b-256 461efdcf94b2d3cec59051d376176b0a99234bf2b9f35274885a786f11e13ac7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3b16e4e2c8dc33e30ccd5f5044533ea0bccbb694a812dc5760c0cc380f352a46
MD5 4a11e89ab6d71fed48885d3f9d7ad776
BLAKE2b-256 511c58d2483545b4b3120ea30a6af32cfa8e054ac5ad2dab44b891d29a5b6ddc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b8bd84d12b48209f6bc559d82a99164519404c435c4b331e5ebff77e31146e69
MD5 f62ceba830f74b2100aa7c68b9a7d3ea
BLAKE2b-256 e27dea27b45cc6398344edd394196002842c9e43136a18c9ba0a1cbf4ec45de4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d20d3853e92530772d2dc8b6d83294cb23acca8c32424ebc76f83d879983f74c
MD5 a16d2cf6c34c066e403a6c011b7a7857
BLAKE2b-256 8f6d4aa3450a44d74cd5f77c0b7a801f0cbfe6a2016900cee51401cb218690df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f4ff2e4b39c216c74083b217261d6ae38913410e56a8cef005da913ec7fb3f0
MD5 e499b4f70f05d2aeb6967753ba381948
BLAKE2b-256 116ce8efb755cee64502fc3a3c303ed9e164fe0ce1beb7cb35836374629640e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 687a5dfb25868ba0367b4e70b7aa0e579477db59c2124edd9e02bc8766188165
MD5 0ed2105277d58734f64768ba0ea22965
BLAKE2b-256 a76a32fa5cc295d5083c1ae51349152277b62462be300864dfe954eb9ca92aab

See more details on using hashes here.

Provenance

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