finds.dev← search

// the find

SamiPerttu/fundsp

★ 1,167 · Rust · Apache-2.0 · updated Mar 2026

Library for audio processing and synthesis

FunDSP is a Rust DSP library built around an algebraic graph notation where audio pipelines are expressed as operator expressions (`sine_hz(440.0) >> lowpass_hz(1000.0, 1.0)`) that get monomorphized and inlined at compile time. Channel arities are type-level constants, so connectivity errors are caught by the compiler rather than at runtime. It's aimed at game audio, generative music, and DSP prototyping in Rust.

The graph notation is genuinely clever — Rust's operator overloading lets you write `A >> B ^ C & D` and get a zero-cost, stack-allocated signal graph with no macros involved. Compile-time arity checking means you simply cannot wire a mono output into a stereo filter without getting a type error, which eliminates an entire class of bugs. The dual static/dynamic system (`AudioNode` vs `AudioUnit` / `Net`) is well thought out: you get maximum inlining for fixed graphs and fall back to heap-allocated dynamic `Net` only when you need runtime flexibility, without giving up the same operator syntax. The signal flow analysis for linear networks — computing analytic frequency responses by composing transfer functions — is genuinely unusual for a library at this level.

Compile times will hurt on any non-trivial graph: deep monomorphization of nested generic types (`pipe(pipe(pipe(...)))`) is exactly what makes rustc slow, and there's no escape hatch short of boxing into `Net`. The error messages when arity mismatches occur are typenum type errors — walls of `UInt<UInt<UTerm, B1>, B0>` that are opaque unless you already know what you're looking at. `no_std` support drops FFT convolution and file I/O, which is fine in principle, but the feature flags interact in non-obvious ways that the docs underexplain. There's also no built-in MIDI or clock/transport abstraction; you're wiring raw frequency values yourself, which means any real instrument integration is left entirely to downstream crates.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →