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.

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 at doppler-dsp.github.io/doppler — Quick Start, Architecture, API Reference, Examples.

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.17.0.tar.gz (9.3 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.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

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

doppler_dsp-0.17.0-cp314-cp314-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

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

doppler_dsp-0.17.0-cp313-cp313-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

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

doppler_dsp-0.17.0-cp312-cp312-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

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

doppler_dsp-0.17.0-cp311-cp311-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.17.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

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

doppler_dsp-0.17.0-cp310-cp310-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.17.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

doppler_dsp-0.17.0-cp39-cp39-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.17.0.tar.gz
  • Upload date:
  • Size: 9.3 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.17.0.tar.gz
Algorithm Hash digest
SHA256 060de29e82db0a16d6e1fd1bef32c6a22813828b6886ac3d0b8e7b6dd43ff1f5
MD5 94aa417fb5495fdcf2205cf0aed1234a
BLAKE2b-256 d33798c06e74694b40250e1fb41c95e7223673b6259ad852fe720aa189026eb5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e66130e698dddba1ed4f74599631347e75e4aa3f98da2b821d04484585a8eeee
MD5 01248fe155c24f774413098a4793de39
BLAKE2b-256 6659e8d661e27b82bcd8b0517c2d6502b21690bc5a3a7baa1f2a08b1e1fc3f81

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 23e249407b9f20bc3ad0eb05b7900f73eb60fdf9e0d8e3fb1f436d956462993e
MD5 4ed30494a7ffd3c0f26918b10e215d1b
BLAKE2b-256 6566ab289357254aa52372dbaacaef21432293bbd1817f3a5a06b89ece2cde54

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ec8842eeb0f2dccfab41e00599e41a270255aa47fd818c77d6f5a986fa5a1066
MD5 0693ae91ad766dc64cc5dd772793e185
BLAKE2b-256 e747385b40a9ee202e231f740a3ef3c781590d49f126010691d4b737ccf1f8aa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 dfae3c41ff660b6b6acd5ea586dfe1fe8630a04a45fd70ad02141471391672b6
MD5 af219089b05dc7c8931b4a63470b249f
BLAKE2b-256 e3321907ad2ecfee6cebf73bd965ca997e3aca9903c24f40b8644ddf0433ff31

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f10e979bd61faa70ea926ec5bce12819ef0b86e054fd27387e4fef8c9c10ae27
MD5 f8c9a1bf0943391208332894bbc41fd7
BLAKE2b-256 cb6d5d6de40dbb6ca04d3180cd35d0433d4a8d404755d5c592210abf039b8f67

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 67bac3a66270c89cdbca20516b386b84167a9b2d5bcf0b5d5273d627851ae4ee
MD5 2877117e21d1951e8bd9ca278417cde5
BLAKE2b-256 6d857cc249505ebe941bbe6c3243568e98d0e2ec08842806b61b260a41e08925

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 359820e1bd5b565d9a4b8b10ec466607c0cba710f72ceaa1c6212a9574d6e640
MD5 592640c729cecace8eb5458fd81b3a70
BLAKE2b-256 9a8a201f1c82f1b1fa40bed3e4015d5d60df2016804970e99d210c8fc0a3e83f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f17d718097d014ef3aa2f787fc070aeb066f86cab2ebc5ce3bfa247575c60498
MD5 7d75c925964ea7ff110b2a27681c9ba7
BLAKE2b-256 c35010e2522bbbb2e0ae44a8d492611ffd6d7befd027a0de042fc3297e6033ae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43339baf6971c13440ab665aee1b7c2a097553d87b2a2e7417eb05add32a494d
MD5 9480108d625a447210f471e0588e4e2d
BLAKE2b-256 043608f08a70e30dfd984a43f208adae5f6e33880a690bf37c0e41bbdaa73127

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b2d43763abcfa748e2c3961547f28f18f54f812957643e0053cb7e8c8e2563ac
MD5 93e0551af8df0cd54bf2a61ac9dbb9bd
BLAKE2b-256 68e2a013bce26e37cdd1400d1f6ffd264eacb332f31500262681473c609ac50e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa2f847b6d127f9997224d1a13fb5413d74c0df3ba37e962ba3e205ae1ae2d3d
MD5 767dd7c58b07b6c31e09a2ebe0a36281
BLAKE2b-256 43e600289dcdc1cf236de8a95504e4d8fcd47923e24c02e60a758e714d49c4cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.17.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c5eb90e3f382756d452de308fa3c5601c5de8fb16ee4e31ee2268620ec76b92f
MD5 ad26c1eaca2e86d19082d16f94ca10a8
BLAKE2b-256 58a4570380e4389c91f4722de4def61b074a92575df0dbe2857be857e5034199

See more details on using hashes here.

Provenance

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