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.

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 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.27.0.tar.gz (13.4 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.27.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

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

doppler_dsp-0.27.0-cp314-cp314-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.27.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

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

doppler_dsp-0.27.0-cp313-cp313-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.27.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

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

doppler_dsp-0.27.0-cp312-cp312-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.27.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

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

doppler_dsp-0.27.0-cp311-cp311-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.27.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

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

doppler_dsp-0.27.0-cp310-cp310-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.27.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

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

doppler_dsp-0.27.0-cp39-cp39-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.27.0.tar.gz
  • Upload date:
  • Size: 13.4 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.27.0.tar.gz
Algorithm Hash digest
SHA256 8f53f2afada530d45ad9f0916929aa842c9529f989a521093eb5651c67606281
MD5 e86fc7a6a86e12295f38235dda4a3de0
BLAKE2b-256 d9c49e72b04fd8b30aa31a6c39e173bc54eae552dad1c609e8c760a42fd84b43

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3537e78c369fe18a28104945d227abb4e303f1e89bb4863aabedeaaeef578219
MD5 2878102707715a8f67a3b04173fc9bda
BLAKE2b-256 677e038b4fe46bbd69353662ac434dfa5acd67711a58e3e928677a5010884dd7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ede014cb0cfa86804035e5b57911daa7351139ec07eb0c18b5f29fc4a7119b46
MD5 5643a4c7b27e406b58fbcf2997038e19
BLAKE2b-256 2f7e3f361d442829d3dc2751eff4d6ecd8e970c0db4d6ee97cf09917d3e20d15

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 82c9e1562ef095c31c2a56ec8501bc7663579023fe478b3d598e9fc813753be6
MD5 e42fe854b92297eb47a33588a5e275fb
BLAKE2b-256 564b153335499ca80129d3e16bd45ce9eb4182c5ff00819f1017a19a21c76a67

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 706c04a517764afb1a1088c69d330676f74f1f3baa636e82fcaa4d7ff7e97ba3
MD5 400be19e08face13dfbc03725a39c90e
BLAKE2b-256 13eba9c5cfa5c47fce916d10a244744c4013d6cca2eb0355b1b8cad3ae577d55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2f804e0d611e33a772ee4eb5774b2bdcd14e12e2997a91e9aef4b29ee1fac6f1
MD5 dfcc15288d90c959feda618e88aec0fa
BLAKE2b-256 075d8db872e5e8fe1e2841625b63af1f6c68074fee964cf88526c5c5ac36237f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 693fb7811a160e7889a72ec76fb4979b0d16fb42d98e643064ea5f54bcc72e62
MD5 31893915885dd901fd309a41430d763a
BLAKE2b-256 2a6036f9fadfd9f050691719705d8a935d6822007f732c48f3d8b0ea59051c7f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6db39da78f641ffc47c46f781407a9745e297e982d46063677a968b1bb516ac
MD5 ee35ba05d563ee8ebfc7ee5a5431fbda
BLAKE2b-256 db83311ca7a6963c4f6bf29aebbebb810b790b17c8b80c39531144fd413008fb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2a14ed1c0696190d5818ad6d91ac20d274e5885a459334c630f75b467b941d2f
MD5 fdf27743ea96566cddbb34a8d7c7b9f3
BLAKE2b-256 5018b762b210ae7a9d8cb9096dced12cf894034d68c92f237de095a7efa939a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2e9d9c585f20b8e2c5a36588b779cc9d4e080b756c5b84eafe384673e411eba7
MD5 02b8d4be463d56653cdf9c35c31beee6
BLAKE2b-256 fcb2ddf2e19e522a6643f0f2c896198dd727bee4c3a530e2b2ed9dec81103958

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 aaad03701cc3c0209342143db983cf675b7c34547e7d55492c24d35f4b5c63a4
MD5 1793a8d6bd2fd2c84d8de9b70441c946
BLAKE2b-256 224266f843debc51646b8eeb118c44b77b551a039025eba9b9c43878ce04d088

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 53145317dbda6c8a770cb115b632142d64232371b5780b325357bcfa5686d9e1
MD5 d13fa22815637c313509128e5149282a
BLAKE2b-256 2ced879a7d23f5c011584e2521998ecd522529c68daeb8569a22e3d161f09c5d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.27.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3381481a65bc6b1ee31cb5c328b11472f58ae01e2a176ed3c8fd7d1ef506070a
MD5 baa92343a590e0d79c25feeab3bef083
BLAKE2b-256 ee2cd8b2155960b1d1d3431236c6a004e5f9cfc2da607898ddd833e16444e743

See more details on using hashes here.

Provenance

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