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.29.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.29.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.29.0-cp314-cp314-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

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

Uploaded CPython 3.13macOS 14.0+ ARM64

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

Uploaded CPython 3.12macOS 14.0+ ARM64

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

Uploaded CPython 3.11macOS 14.0+ ARM64

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

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.29.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.29.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.29.0.tar.gz.

File metadata

  • Download URL: doppler_dsp-0.29.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.29.0.tar.gz
Algorithm Hash digest
SHA256 152e34b0dc5ea55e86962011cfa6405ae92a2342da367ba5c80890949d8b5673
MD5 25e5b6d0fac0a3642f7b03bc5402fa95
BLAKE2b-256 6ff0920d696ef8fd85f9694e958c7b61c6c329a5cd64efca7937a00d7fe1492f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f5469c3c5b53a75e183aa016c7755d735f859ecba0e46c2c4d7a82b430375f33
MD5 28df0b6f4522e88a214f8627ea7ec11d
BLAKE2b-256 7c99559f1d6c295b7742c3709b7bb789c060534d47edddd84b17a00c3e3325cd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bf7160dc80a327023ceb02d2f13526566386fceee6403a2b20b502ff49c7e07c
MD5 dd11b00a497e2335b71b9f51f6ade5d4
BLAKE2b-256 6f5fa5074ad0aa1526beebd052d6eb1bab6a6e1cd6acc0e3a54cb73c5af66324

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c95ab30458949827ad5ff34a02b9d775cb87216d597c644c21485e74b0e30f4
MD5 a5c502e20ebe350e1194cc12ac7cf44e
BLAKE2b-256 50f4d85ce9aa043f491441626dbfc1fc6bf963198dbbe083732a45d9dde4952b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f532c0026a0f9c12e0ffaaac1fce617ebad5288498ef8498151dd7fd71d0257e
MD5 818cf160cea938455dbdbbc73b4ca129
BLAKE2b-256 bf908346a943de483f3844823e4606c18788c1686a1d340a4e86c52d6d5bff3d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4289f2d0dbb1d85052ded5efa9143fc1b89338ba9e13be560faf94236724a80c
MD5 8a97703ea7be4456f66fa63d8e124af7
BLAKE2b-256 ed9c7ef228167a54759aa0c481b6fd049f7be127c39e8db94f29e2b6d5d9fb41

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c5dfb60e1996d961b8ceced39e430ee6e0fcfa620fded834173961d6b282a4a3
MD5 d63a3c7358da11cf48c167935c3b9df1
BLAKE2b-256 0bf1d36e1a13bdd4abf8d32d8f0d24da684f4cb55fd2db3e622f1b59e2d486a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8bd47e2d6df6f16c0955cea1fc686feb3c97e7bf05d83ef0d40236c85b20ddc8
MD5 fb1e33f2c4713f9aa948e6e16cb9430e
BLAKE2b-256 67f14b45b9c06365503e3598929c2864c985d4c0c7e906b878ef660eab1f8cd3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a8a10a50e535afa2c606e8d9bbf7b0e46229a91de3328f4977cb6bce2fbb8949
MD5 a051533fdd66c2e7b1e2c87adc416a35
BLAKE2b-256 92f1d6d5b49ee499057e12cd2e9330209c2ee48bbb41b3ef19c03f26066f15b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 358b16e684722cc8a1daaac669b9be31845c72ea82049a273bf1cca5367b3d67
MD5 24b23562427412214d078480939d3c5e
BLAKE2b-256 72314c399c92b074a4761afda898d8863223619ee23d0e7358c1e33697ad4e42

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c46b60c38cd37023bc598b3a9b2717efa0dbe009d34f6aefbabab91a763b5c4f
MD5 14dc2c8c8794053126699cbdfcac8434
BLAKE2b-256 8ad4a23e6a8795c291eb63f13892ba6fdf7c76e89e68edee5c2027c91c0611be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c89aef8b9db26a744022841876ec3bcc7d00c5159138c38233bc3936ee36799e
MD5 92f21da52f8c0ca53b2cdb728c095312
BLAKE2b-256 58f4dba312b8ed745e2a9747acc1fb97f5ab93755fd3317a4665833f15ddd703

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.29.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9ce80a4cab14549ec33b32531610f355825f2287748f81b0ee9e0cacf0e83f1b
MD5 cc46698328f417f8ab7b2b500ea86180
BLAKE2b-256 1ca3288527927d5ad83f99b8efd5921f1e2f698596803744ff3546eb157bac37

See more details on using hashes here.

Provenance

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