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). 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.14.0.tar.gz (8.8 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.14.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

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

doppler_dsp-0.14.0-cp314-cp314-macosx_14_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.14.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

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

doppler_dsp-0.14.0-cp313-cp313-macosx_14_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.14.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

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

doppler_dsp-0.14.0-cp312-cp312-macosx_14_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.14.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

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

doppler_dsp-0.14.0-cp311-cp311-macosx_14_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.14.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

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

doppler_dsp-0.14.0-cp310-cp310-macosx_14_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.14.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

doppler_dsp-0.14.0-cp39-cp39-macosx_14_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.14.0.tar.gz
  • Upload date:
  • Size: 8.8 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.14.0.tar.gz
Algorithm Hash digest
SHA256 4ad25b3b07d5fea7015845de6ce903b7b2c0cdeb16bedb15f50d00cb06072e4d
MD5 8f78de4175faba4edf68116d30e5acfc
BLAKE2b-256 04540bce6377231045e7899843c5fb65586aaddc22aceea6215131fb42a3c778

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1b2bd08341760307bfcc4b02059adab5b59a706fd1d1bb1f7f2388b23a59e6d3
MD5 c01a8b07e7dea485442e054b7752b31f
BLAKE2b-256 dcf4e2c25625b7ed859d4ea421703d30f453cc132cc6eebe57afeebaed728042

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 086210b5c8d8ab916d33f18c391ec959440ae5933f2206a18c9938d92747f1bb
MD5 7cfc7b993242b9461ab9e4eaa71a3069
BLAKE2b-256 192699ab4cb88a0a48d5e99a8ffb6af397d475074339eb5b15f7059d2f5cd728

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ed31b090608bd742d03aaebbe04a973a942833ead6fbdd40460dc61c9fd01c09
MD5 99d933f1eebe0a7204adfd358c40d956
BLAKE2b-256 c16f6835c8892441a296aaa5ed2f5de2ec449c8c16b0b488ad21957159a4da36

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 55e892861e723edd0a808e7576a814ddf3f2e6145fa28378797c58cd68632613
MD5 60705819dfe8798995d5d9718b15a143
BLAKE2b-256 8c455b1a23527d265556ac0fda6eb9d2c2e150a81e75d8ce53174e1a4aefbb28

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d985080160a47bcce23afde7819853e68482707f73827cd22a6bf80adb9e2026
MD5 1dd6ec8c31c796720638b1e3b64ef730
BLAKE2b-256 0b1bf4a7cab96b17d3e0421a978b5991fdc38d38a7ee8e314f487dd2ba50ff49

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ec37caa9cef5148e4c9f84d76f44423d183db6cc001ef54342f2b9b0237deef7
MD5 58d00d04332bdb692ff3f0adc75ef257
BLAKE2b-256 f8ce9770af8c2522ddcaf90f5a242539f61a433dfacd24911b33b5a156453896

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b44a65492ec8cfb918b935df9f1cfbfd47a2ef3ee1c2904c1be55e4bc8eac8be
MD5 493a9ac8808301a382c28125da710660
BLAKE2b-256 5b6effdab501ee41416acca9e980676ab825533b7a8bc1616516606a422747b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8e4d6fa30a8ede55a0a4352b77e5ae1f7fcad5a8f7d817718c0ba6d17a3d7c55
MD5 4cbb1215d9f1d9c2f1e0f40ba988235d
BLAKE2b-256 bdc038ba4de15071836badd87c55302b5042bf625ab165fe8e76cf9439aac73c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 01d1ecb40e4b31f4146a0e10f85d60e531d2042e1be6de181792f8983fc6856e
MD5 dcd4bc304b9bb8b771e8a42021439e5c
BLAKE2b-256 7e4be6c03c2898993ca045c8ad26635be490fa87eefde6358580a9b264cc83cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e93667ef194cd143b77447a7021932cff87df736289aebd8fccae00d21ad34b0
MD5 e89954d5bc6d776d95625781a312df01
BLAKE2b-256 09a09e88ee3e3c309dcec7a6ea596d24ce560201175b2e90e927631b96696f9b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 32402ce189bd44c84155e30f7e8e3b4a9855618c13ca70d76cb320f924b16054
MD5 d677f1e298dabafb871802925c5a7c58
BLAKE2b-256 62de87b01821b7bdce232b05303913f1c855db5d7f9becf892e0ab68f806f59b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.14.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e43661d922b7898b1cc8f4b05800aefbb67913b664bd3fb8076cc2fa1cd29750
MD5 b4312f311124e8b4a796d691b81dbac2
BLAKE2b-256 e3d5041d0d4d58dcad7698cf0ac954671f1b23f1cdfac7e02fca688abe835630

See more details on using hashes here.

Provenance

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