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.16.2.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.16.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.2-cp314-cp314-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.16.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.2-cp313-cp313-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.16.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.2-cp312-cp312-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.16.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.2-cp311-cp311-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.16.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.2-cp310-cp310-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.16.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

doppler_dsp-0.16.2-cp39-cp39-macosx_14_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.16.2.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.16.2.tar.gz
Algorithm Hash digest
SHA256 360adafa6e713ee91ef924ef5602eba11543c1a9c356ac561f31a4d25a6a222a
MD5 f98ff13b7c287c66f9a0e4df0ca7bfc6
BLAKE2b-256 2dc4ea2c0fac92567e6c7f69f28178b5aadf303775a4a1b5012b5a645e443b5e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8dd58efc692689c7dbcb51ca813234a4f224a10cd61723731519fd38ea6cea10
MD5 4cf1a6e4cfbfd989623a5904f4414c2b
BLAKE2b-256 3f3318e8823cdea2af46bbe4cf3774b8bac1b308f408187ba674c5a6998c16eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 28759e52740f7cbf915c50e8a9a3fcbc0f0032a98ad3a61f9d972a57884dcb34
MD5 ef314ca04b00d1992d97f5f3c0e17261
BLAKE2b-256 01fa88185fa16bc83eb840084d286c5cf08ec74dbb6b0c51e2efb0673bd99226

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5636ec09edf50eef30d06e3cff852a687f221669b61a19dcbca93f96f3be0fa4
MD5 282a80b88e154c6b59f284685bedfff2
BLAKE2b-256 c5e21e6c79b7c83adcd55b8a78cbc5ed3d93860b501a9c887d0f7fc8ca3632f6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e212d2bf4e48412c46fb62568e5b403a06350661fc35a8d3bc39601abd495354
MD5 0285823438f7a47d9b230d304c30180c
BLAKE2b-256 4b10cda5c988994d7a5fd5ff3d279b9e7740de6cdcde718e638991bac682b385

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bd59aec052e262eab90758f23814d538ebb9fb86d0044d78d97c7153802d0e2a
MD5 5f06bcf78892e6e696de444dfcf032c8
BLAKE2b-256 a14808d70dbcf365c12badd5cc4c2e1bc095c58864a310fa0e2b2d495952f186

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 fb2f0c943cf29f462d5d00402a57437e245ebd2094be3fc160eb094eb90b7db1
MD5 3799f1b729849e002677fc2b925ee18e
BLAKE2b-256 48bc0d69a10c20b7fe0260853704ff357d12654be704966feadffed395cbab0a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23eec052ae56b43025c12650a946c2731d5ed3aaa1d677c5ac1b23e71181a8cd
MD5 3d706b3b1a6274174592722b8d51da95
BLAKE2b-256 bb3f8a0c108d6a8af5f26b78404bcd47e4dd05508d0a3019334068a1bc42e0e3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 08d3f88cd947eb46f32f856304a56226f16d55056a192f6eb48a5ba3d05260cf
MD5 2933de51e8b72f27534875515634b448
BLAKE2b-256 674ff993908869f92e50ccbea0117a1f13eb2fae8df90a67b3e6d84356687eb0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 49feae4dc38832ff560747ace1db910304b1f0e53a44a5afa16c7fd53a225299
MD5 b0649edaa2a0a9580c9b595eb96ff5ae
BLAKE2b-256 aa4e594886c8429b9c41a0c5c6acded8a4a840dc6d051c5cb1101c8bb128ee9a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3125446de3732d77efa72560b990264a7498791d1941a49341ae71e083da19c5
MD5 d9f1904aa7041236be534a08de3fe1db
BLAKE2b-256 2fe34a2a6f18a4f3b28c38119b6240af7d1f78a00ed7032426c58ece66cebfd4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fd61eaa977779711977caf65ea6ec31bcedc2da3748c1d9d815da1454103781d
MD5 4be6eb8de2eee01d918f7481d7756bb4
BLAKE2b-256 701754d2ba796ac6e0d14a68952fee811da24b64b9a8f9eef0f6345de5009ccc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.16.2-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 20c21fcd1211eaf7bf3cebd0603167623c834853471029c784c9ce72bcda57de
MD5 7eb062c484c790879ea4e6e8342adf62
BLAKE2b-256 aa4c000214deec2aa7f8230b0cbd21e90bf5091998be60c6cfa9660dfb77ba6c

See more details on using hashes here.

Provenance

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