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 NATS-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 stream component (libdoppler_stream) vendors nats.c (Apache-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.30.0.tar.gz (11.5 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.30.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.30.0-cp314-cp314-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.30.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.30.0-cp313-cp313-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.30.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.30.0-cp312-cp312-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.30.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.30.0-cp311-cp311-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.30.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.30.0-cp310-cp310-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.30.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.4 MB view details)

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

doppler_dsp-0.30.0-cp39-cp39-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.30.0.tar.gz
  • Upload date:
  • Size: 11.5 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.30.0.tar.gz
Algorithm Hash digest
SHA256 dccad130d33634037ec76871c0a1f312eaf6923bfc37a222068cfe3fc5ba911d
MD5 625117b3e1cb5af3795a09ea8c534d83
BLAKE2b-256 535e89221715367cf794e73085aa1c3277dde6c0aeae18eb5fab836a22e58760

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 458b256f26d801029fa437486a21f36fe6b22ebeea45ccc67b63b55c89f7d0e1
MD5 dd061cfad857746b535af0c64e90caf2
BLAKE2b-256 44e9eda9d2eef21d014d9fcee1995cd764197a0959aaeb9b605d992927378a28

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 475bca13027ffa6870ae922d40ac565cc75d6fd831fba8c36c08c17b007155e5
MD5 2ac315c20369256dacd83e50c6e7f8fc
BLAKE2b-256 e15ec9b88efd2235cfae6628b1edf936ab240a9f1dfbafcadf6fdc37c339809a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 041bfbbd6cbc41581dcaa55241e7ca2c1fd978929d034c4cb41d0e5602b1d0d3
MD5 9a06ba68136d46f7b75d5c8d1d3053f2
BLAKE2b-256 26ccc6ef57475733515059f78778d200188e64726906898b97f94394f3a9e0b5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7b9295104ddb438da765e84e06fa5297aabacaa4b4cd0c8c44cc256c406a77c5
MD5 643ae9388779d0846e5736c3a6b7be1b
BLAKE2b-256 7b23a26f154b448563d836fd87b9c9ee7ab764ab1a6f416c36d10215b80ad67f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c84aa27663c7ea888ff69667b87fc62738e52f794b844e80c4c96e010d379b97
MD5 f15b36036a3648405a2adf203df0c862
BLAKE2b-256 3b5277ea2e79e465b9de7529f4d4f27135d97592a3904eaa03b985ebcf7e398b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e6ffddd4f88fdf37389f702c4235a3692cb052c6334537385fe96de134882592
MD5 5fcdc10f7550891a830ba74b2ad2124a
BLAKE2b-256 7f65d6e466bbcbc9b34492c59067a25c9676cdc30be6812d04a7402211bbedc0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b4804f335aa7068f73462f9666dd7112b3849dc2ce56562c7ef2d67162b861b
MD5 5bcf89388a0ab87c2dd0fe8f62e6bc51
BLAKE2b-256 650dc56d823dd2c3f0add8846dccd355a3f642a7b69aa89f3771ed88436d9f0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 27913d926fa6875991d06c5fabff0a143a2e80aff9073939d90763e05044ce14
MD5 1eeb924b0f03825f5a45849f7caf2e50
BLAKE2b-256 af29e48ee8a8881fd00d90afb429065a52dced598c0407cac829bbdbe97d2322

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a76a556da11a63d73a54ac911c184ff4b160deda05ecdae6e9cd1c7913cdf3e3
MD5 f19e71bba4372d5046424a7c1b86d0cc
BLAKE2b-256 246bff7e2447d9161f4dc1b51752b42b27fe5a7bf6cefd73830db545ede5f3b0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a119fcc340627deb1aba5342aeec40a07c60973ad2b25a570535d4ee4bed6c23
MD5 035c008accd422f8126a8ae6b3e01fdc
BLAKE2b-256 0f60a6c7b02bfc39212e837847649c525d06cb334eba83de5c57321503ecb913

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dc71ace498a7ae1ffc20d1890d9cfd28770c6e1ef5dbaa3d1f6a01aa6c5d71cb
MD5 2be042eecb4676727a977270a372de18
BLAKE2b-256 3d7e3dba953082de5c43702e6c641a7392f8cbaffd3a3ed4f20e21d10490dded

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.30.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ba6e08638ea2ca639e1c855ba21665de4abd8ebd7da72c1e2c34c76ce36c899b
MD5 3d4c71b6ba8965d5a4c6cbbb42c3b511
BLAKE2b-256 fe00d7423389ca4f3b253a03496c57843c3021f250d048c8eec523eb6cf44251

See more details on using hashes here.

Provenance

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