Skip to main content

A Rust-based UGen DSP library for offline audio experimentation, with Python bindings

Project description

rydia-core

rydia-core is a Rust-based DSP library providing small, composable UGens for offline audio experimentation, with Python bindings via PyO3.
The library focuses on explicit state, sample-by-sample processing, and numerically robust building blocks inspired by SuperCollider UGens and classic DSP literature.

rydia-core is designed for experimentation, analysis, and algorithmic sound construction rather than real-time audio I/O or plugin development.


Minimal example

1. Sine oscillator

import rydia

osc = rydia.SinOsc(48000.0)

samples = []
for _ in range(48000):
    samples.append(osc.process(440.0))

This produces one second of a 440 Hz sine wave at 48 kHz.

2. LFO-driven auto pan

import rydia

lfo = rydia.Lfo(48000.0, waveform=0)  # sine LFO
signal = 0.5

for _ in range(10):
    mod, _ = lfo.process(0.25)
    left, right = rydia.pan2(signal, mod)
    print(left, right)

The LFO output is used as a stereo pan modulation signal.

3. Delay line

import rydia

delay = rydia.DelayL(48000.0, 1.0)

for i in range(10):
    y = delay.process(float(i), 0.1)
    print(y)

This applies a fractional delay using linear interpolation.

For more advanced usage and complete examples, see the examples/ directory.


Provided UGens

Oscillators

  • SinOsc
    Phase-accumulating sine oscillator.

  • WhiteNoise
    Uniform white noise generator in the range [-1, 1].

Low-frequency modulation

  • Lfo
    Sine / triangle / saw LFO with an additional quarter-phase output.

Delay-based primitives

  • DelayS, DelayN, DelayL
    Sample, nearest-neighbor, and linearly interpolated delays.

  • CombS, CombN, CombL
    Feedback comb filters.

  • AllpassS, AllpassN, AllpassL
    Allpass filters based on SuperCollider-style formulations.

Filters and utilities

  • Biquad
    Transposed Direct Form II biquad executor.
    Accepts already-normalized coefficients (RBJ-compatible).

  • LeakDc
    DC-blocking filter (high-pass) useful after rectifiers and nonlinearities.

  • RingBufferS, RingBufferN, RingBufferL
    Power-of-two ring buffers for delay-based structures.

  • pan2
    Equal-power stereo panner.


Design principles

  • Explicit state, no hidden global context
  • Sample-by-sample processing
  • Deterministic behavior
  • Defensive testing against numerical instability
  • Rust as the source of truth for DSP logic

Python is treated as a thin orchestration and experimentation layer.


Non-goals

rydia-core intentionally does not provide:

  • Real-time audio I/O
  • Plugin formats (VST, AU, AAX)
  • High-level synthesis graphs, schedulers, or DAW-like workflows
  • Automatic filter design helpers or large DSP toolkits

Those concerns are expected to live in higher-level systems.


Project status

  • Python >= 3.10
  • Rust core with Python bindings
  • Offline / non-realtime oriented
  • Experimental / research-focused
  • API may evolve within 0.1.x

rydia-core favors clarity and composability over completeness or convenience.

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

rydia_core-0.1.0.tar.gz (48.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rydia_core-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (269.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file rydia_core-0.1.0.tar.gz.

File metadata

  • Download URL: rydia_core-0.1.0.tar.gz
  • Upload date:
  • Size: 48.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rydia_core-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9fe2b56a65b6e13decc4fb5a3415a334793694aab6dc4264cd66ce5e1b64ea06
MD5 aa54894a77b7601fb52b761b12255151
BLAKE2b-256 ca00ca25df13b8f86ebe1c4b4327fb856435443c7e832b369f42350a139d1085

See more details on using hashes here.

File details

Details for the file rydia_core-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: rydia_core-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 269.4 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rydia_core-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd254734ca9cfcd3ed1a1a405b275680332a411f0179fd01c491f249462258ca
MD5 ac1d1a7f5be73ab8a00de38d98cda3d7
BLAKE2b-256 401f62273a295ab92e9cfbc30ec66606b7bb3efb670108ce341e00e14eb951de

See more details on using hashes here.

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