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.31.0.tar.gz (11.7 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.31.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.31.0-cp314-cp314-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.31.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.31.0-cp313-cp313-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.31.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.31.0-cp312-cp312-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.31.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.31.0-cp311-cp311-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.31.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.31.0-cp310-cp310-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.31.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.4 MB view details)

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

doppler_dsp-0.31.0-cp39-cp39-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.31.0.tar.gz
  • Upload date:
  • Size: 11.7 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.31.0.tar.gz
Algorithm Hash digest
SHA256 5650335167562f40b3ca3517218ced85e1d042e1a614b51cbb979ec628e858de
MD5 0aa14d6a0f810f8f7ad3e0e3735dc76e
BLAKE2b-256 6b4bbc4d25dc133a5be0bc71b29ca205345896f32a460bdd0e75dc4d6b6b0904

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 678fcbf9758abd8e09914a936142ce16f389e1466a8746634878a38869e34879
MD5 4cb19ad347ec293c7e2e028483e36e99
BLAKE2b-256 d5f44b4619c167a203cb86fe39ec1d4eaacdff258b7620e21de59e15910b9198

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 38d8fd91d25b886a4e7116b72c8e08ca45eb1e94a70a097b34bb58d37b294b38
MD5 59ed0dea5c39022af26b22dd4a261096
BLAKE2b-256 65df919d3c973e7bed7eef8efbf49edb0dc026c202b3ba14e61470d93e63e1a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 67060402acd6bd248435ea186a7c1db8aed5431bb447df40a193963c38ca4628
MD5 d72d566fe702b6a2e9e9526da19ffc24
BLAKE2b-256 9cb0bde344c564391eac29492d26d61c87a5bbe34e96726176a0f68ed8efa539

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1455907f2454c7bf43780bfcbc05a0f43900c7f98e509581b86a19daf98ce9d8
MD5 2ba283cf2ceb2cb03402d2abc9111b62
BLAKE2b-256 1d7f9184827d460b61e55b68b7196d33c4a476eade12ecaa0a46506a51a0827a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1021bb2d94a29271d2a80e02d76fc4912098db81b63053b5e97d7f060393c99a
MD5 f9c7867f0f0096c05ffd5ecbc5743561
BLAKE2b-256 af4c3638e6cbf749a96932714344d9ea5164fac6fb8a77f6f568bffa4d784929

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8a3c9adb4b23ec182ed54e83866fcd98fc5abc8b3ca92ed4e4893f102455adfe
MD5 63c2af5158a41c507e6337a854516bfb
BLAKE2b-256 540b0ddc39eeb79d2e6090e877b9e01bf2c22fd89aae08ef6f948aaf9632b548

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a017d3ce88810f70950daacbbe5b517d11a290f12eb95d00b1a747b7903a88fc
MD5 3111aad3a96a51a895c06d0aad32cdc9
BLAKE2b-256 072031f867e12e186c7f2b6b73256c91d42b7a5047be0dadf800443f33600b39

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 774936c19d69f30de8dce14024fdb08133afd0c82e9c3acbe525f90c519ea448
MD5 f9f4e0937d4d449b661c7256888d792b
BLAKE2b-256 361441ddf762079d7bba2491c1a1dbcd5cb2760a235863353c2cb4ad255b0d16

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 59a0c92508ee38295fde15dda148b59a00eca88dc7e70ad244bda899f97fdc23
MD5 30e8fa4f36f2d091bde66df307ed8b84
BLAKE2b-256 6fb069e9901bb70d60f730022184e2d8fa57aaf00e2ee7c5f00269a9ea8244ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 535da8d00fcc7569cca9445530fe89995daf2fd632756a33e56d0db52ffef33d
MD5 208f8175170e11e4331967ee6c47a535
BLAKE2b-256 1bb1c882e03d1df730f84d04d03353f2cf0ed3bd2a51c147629a15c64dfb97c4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5fbec7f85545d839d9fec2404d3b4144af84547676e0414be0d8d14946ba581d
MD5 50168ec9e60e54c88a8a1b676f6fbe6e
BLAKE2b-256 63739cf972b505295bdf57be40f01e3eb3514079328ed7dc495f411ac788942f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.31.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 18ea3ee21a33381dc9a8391a91075fcd9ce917092f15eb4d5fdfc0205a167e21
MD5 b6c1a6ba65c1bf8f238a8a5102ab2bc4
BLAKE2b-256 7513c137abfeda8c5152cc4ddd81c76454a1501f484eef9bd4c6818c39f5cbd5

See more details on using hashes here.

Provenance

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