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.15.0.tar.gz (8.9 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.15.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

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

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.15.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

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

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.15.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

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

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.15.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

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

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.15.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

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

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.15.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.15.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.15.0.tar.gz.

File metadata

  • Download URL: doppler_dsp-0.15.0.tar.gz
  • Upload date:
  • Size: 8.9 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.15.0.tar.gz
Algorithm Hash digest
SHA256 c7f34007ca54ebe4d20f7fe930d7a9edcdfef63d0dfe3146ea45e21fbbba5cb5
MD5 4496c228db4ab831add9802b4652a1b2
BLAKE2b-256 07bec541f4652a821c7d26e1eecf62f597fe1357efed1ce54258a5a0573e760c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 984631ddd90dea17486b028eb181983ab342f18b20845ef05b26305a52405732
MD5 f3f471130d6f1110ef22725fb1b305b5
BLAKE2b-256 1aaf09451c8efc6814f30ab258116b5bbd6f5bca55a6aa27ab3c74fcdf2cb083

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 25e10aae87a563f86f5e47e2850eccb82323b134fd556ae53d7df2ee4f21f46d
MD5 3a2785edb07cd13e234067a7b567f698
BLAKE2b-256 6a6e99a11feaba54f466d1c6c69d0db4a688be8518b21d2fffc245dc34c3626d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9b7ec36ccf8ac2900b7f78d8923d01e3a4b8406598a656a0b329a0d35bd6f3f4
MD5 7f4ae868ed33ab48690cd6aaa810f958
BLAKE2b-256 34c89d2459b088795a8b10234945cecbeaf93052745a6826cad110994f44777d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b3a61d192364c75a00c1bea108ca899db91952e57f65ea4bab6a89263038140b
MD5 d68d4aecb062df17367c565a7771c4ad
BLAKE2b-256 c76050a3b6d5782a96f93c2c3f2f8697d68b685b71ddc761aeee679830b23660

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19967fe75f053b9cd03caec12f5f7e1ffa0ef408d89ab8cc81fd0ec31cff37f5
MD5 92073f9d1e06e270b6630d8ece4b8307
BLAKE2b-256 c136c61f0d92b06828d4fff65a41615bc4d10e1fd76ca2d92dfc6ba377c2052b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cf00f2f524ee597af80e4bc6118d9f85f5f8f7467701b51378a2dd76bac332d4
MD5 de05db57df09accecb47f173f33aa20b
BLAKE2b-256 689c8a8fa9a91b79a6c202dfcc3de6cb942ff2c4096cabdf20f9956b2df4a6e3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ff29a43d10ddc1821e3149c90e233899c3a4e16991b73d112ab9dd0f7c7f773
MD5 f677361142cf430b8ac8d9dd5a1ac9ac
BLAKE2b-256 cc9486e2ae774a27cb516517479cbc37750d42dd792b57c3dcdc3cebd1d57c7c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5e253226e404f8b82436972375407a4dd9d2d15f3fa3d266585543d21d114a35
MD5 02af7415ac559db1a49d9bcfb56fd200
BLAKE2b-256 5db52b833cb7ff702dc987460056ba07046b2b57eb945de991ce6f10273cb1f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e75d3cf9e8445388db68aba4871660369b81b4b65872b29b85f0a9835388a8f7
MD5 22996c808e40bc04bbc5abdb3a9d6f42
BLAKE2b-256 cbbeb8664dd78e1198f6a99a9e7dc582d17deb908a4238896177edd15cd7d3d8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ab6826bafd257f1303e0741117b6bcb78a154a1cb8615b460b1767e050c3afce
MD5 129aeca32f2da9ec65d2634a60c4d514
BLAKE2b-256 cd6243f0614fc3c60dffbe7198c682b53cd660dc96c2645e3946be4bacbf386b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e93c8ce9e5a519bfd9b04210c5d1c8c96affab0d6fbd1ad4a9dad08ef7bf0d5f
MD5 d5781c0532739e4c7bc3f7bf1c355845
BLAKE2b-256 714c5352a8a608c79cd3dd60aaa9312d1079943260337a0b7a861078d5db3c37

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.15.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2878b85e2999e6e2cdb0b18880384c9261b184ca82ce3bdb26199d372433fbc2
MD5 e26cd171ef1a8b7bb1197b229f36e6a8
BLAKE2b-256 44c19673408264301d063dd7d472fdc9ed11923faea4c29acaaecaacc2854e02

See more details on using hashes here.

Provenance

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