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

Uploaded CPython 3.14macOS 14.0+ ARM64

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

Uploaded CPython 3.13macOS 14.0+ ARM64

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

Uploaded CPython 3.12macOS 14.0+ ARM64

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

Uploaded CPython 3.11macOS 14.0+ ARM64

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

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.28.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: doppler_dsp-0.28.1.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.1.tar.gz
Algorithm Hash digest
SHA256 210de4410c23a5378fe300cff667eaced5f60d10c9587bef7df0667d639aa9e3
MD5 1474998a1503a8db8640547fdff11228
BLAKE2b-256 bc8f3347336b3b2d8d8d04d31e282a4e887b52e2c6db75ee13b96e1fc7aa8b6b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c30b9508ac5f9c33b388f0fbd20974af23c90aaaa3a3ae4b86fb8a9e3d4d592d
MD5 73ea70aec6a15ced20001839c2e2c542
BLAKE2b-256 e04b03aea5decdef6e91e87bbd90e723fc3a5179d14b365c6dffaa24c4246da4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4ed6fb8d0af39ce0212af1ab9fc09e76dca4e064649d2a1f978e5691a81e5b03
MD5 d171ff8a2baa56ee49e050fc67bab94f
BLAKE2b-256 0512bf64fc4fdfff63e3004e46bc8888feeab861b3b7b89b427f255149dad07d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a95765988caaecd517127f1136b331e1f81ae12cbff3cecdd2beba437b7e1019
MD5 a2283eff1ab1ef0c114b604efa85042d
BLAKE2b-256 a7c45a214fa4170549d9f7c2f9529c685938ebabaabd4ded07524c0ef2d4e22b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 27796cc211932e9b5ebec651ad0fdcdb90d8eeb235c4ed26ef77201b72e2c03c
MD5 26825872f84193db86a576476deb9ed0
BLAKE2b-256 e2d5b0890f437fd31f941732e241a1dbaa46bd44ea0351ece1acae97e3ab549f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8370f16952464027e61d55a415baf246826d8266576dc5b219a3dbc8b3396cbb
MD5 49f297569ae3a410ed7a1363bcb4907e
BLAKE2b-256 4ed1e401a8c8a5db15a307659ebcb901b3a63b48a4416bd66b0bd6c76735e2e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5a51933f644f204104af5883aad458128b3c7eb0083daa928b67775cd468fdaf
MD5 6d39560e8518965f1ee537a7ca88add4
BLAKE2b-256 3cca6757f86f05a61907f872885610a67bb99d9928401784a280d12ce8f0f8b4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e467eff741b210f48cb1406e91a4884cb2f9c6cdbd1ad42be2e2d8be1fae991
MD5 9c180d2deaaa4545076bbf7e6f661451
BLAKE2b-256 0e24940ec9880f09d3c5919b258e3187c025c9d7c3d9a9ed0b91ef361a0e2b6c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b39ef5c69ebf3b04b69860448eed711a62d17a4b657968fcd13576e39e118aad
MD5 cced81b037127f44c6cdc19c415680d5
BLAKE2b-256 7d9a91eacd2c29f857c18e0f0ef20552c29dfd6cae505387f28ceb079b133d75

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e24e13034ae95e84cf90b98c40e7b07fa01a5e9344e4dcf024cd5394e47daccd
MD5 fc30bf4021e17ecdc8b1ed9a6c11e12e
BLAKE2b-256 1722285b7f757c32ad5e72e440350801b00cd7c45aacf90925862223fdd4f427

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 52d9a6c03bd46ce15d430a08e520a9e52741360a87eb9292325ffc93d517335f
MD5 aa38099a0d40eaaf048e1fb7398c14e6
BLAKE2b-256 735364d6ee277bae3dc1591c0df8ea9c244a8fb43121a5837050c6a1c54e8215

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1ecf091de21672ff3d63626a3516e918ce9fb50583ad56d30bc87d93d324bcb
MD5 2d0d887bf9f8dceb4a676a472c61cbb1
BLAKE2b-256 f7e7e27384d80a040d9134f8769c478aff7095733b3008a89eab143d349b168b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.28.1-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 00b29a65d4d7da7d111dc6fd294ac4b9baa117a3f0b56c7a56683508bfc4d71c
MD5 abacec94f7ba5d3c0cc4718880e6b73c
BLAKE2b-256 632a0d48ca8dc62e1f2c0a587b41fb0d9f2725a7c1e1b8e7a72464327001b6db

See more details on using hashes here.

Provenance

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