Rubato

Asynchronous and synchronous audio sample-rate conversion for Rust

Library
Cargo
v5.0.0
357 stars
Custom / Unknown

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
76 /100 Good
Development Activity 88
Maintenance 84
Community 52
Maturity 60
Momentum 20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
79 /100 Good
Architecture 84
Code Quality 82
Innovation 80
Learning Curve 68

Rubato is a flexible audio resampling library for Rust that converts audio between arbitrary sample rates, offering a choice of resampler implementations tuned for either high quality or high speed. It processes audio in chunks, making it equally suitable for offline batch conversion and real-time audio streams.

The library supports completely free selection of resampling ratios — including ratios that change on the fly, useful for clock-drift compensation in real-time audio pipelines. It ships both high-quality asynchronous sinc-based resamplers and fast synchronous FFT-based resamplers, and is designed to avoid allocations during processing so it can run predictably inside real-time audio callbacks.

What You Get

  • Multiple resampler implementations: asynchronous sinc-based (quality-focused) and synchronous FFT-based (speed-focused)
  • Arbitrary, freely selectable resampling ratios, including ratios that can be changed mid-stream
  • Allocation-free processing paths designed for real-time audio callbacks
  • Input/output handled via the audioadapter crate’s Adapter/AdapterMut traits, supporting any sample layout or format
  • Chunked processing suitable for both offline batch conversion and streaming pipelines

Common Use Cases

  • Resampling audio between a device’s native sample rate and an application’s internal processing rate
  • Compensating for clock drift between audio input and output devices in real-time systems
  • Converting sample rates in offline audio processing tools and format converters
  • Building DAWs, audio plugins, or streaming pipelines that need high-quality variable-ratio resampling

Under The Hood

Architecture - The crate separates resampling strategies into distinct modules: asynchro_sinc.rs and asynchro_fast.rs implement the asynchronous (variable-ratio) sinc and simplified interpolators respectively, while synchro.rs implements the fixed-ratio FFT-based path built on realfft. Shared machinery — windowing functions (windows.rs), sinc-table generation (sinc.rs, sinc_interpolator/), and the core interpolation math (interpolation.rs) — is factored out so both resampler families reuse the same DSP building blocks, with sample.rs and error.rs rounding out the public data/error types.

Tech Stack - Rubato depends on realfft/num-complex (optional, gated behind the fft_resampler feature) for FFT-based resampling, num-integer/num-traits for generic numeric handling, and the sibling audioadapter/audioadapter-buffers crates for input/output buffer abstraction, letting callers supply audio in interleaved, planar, or custom layouts without the library needing to know the concrete buffer type.

Code Quality - The crate uses criterion for benchmarking resampler throughput (benches/resamplers.rs) and test-case/approx/test-log for parameterized numerical-accuracy tests, appropriate for a DSP library where correctness is measured against tolerance thresholds rather than exact equality. The codebase spans roughly 5,600 lines across a dozen focused modules, with error.rs providing typed errors instead of panics for invalid configuration.

API Design - Resampler types are constructed with explicit chunk-size and ratio parameters and implement a common processing interface, so switching between the sinc and FFT-based resamplers is largely a matter of swapping the constructor. The audioadapter abstraction is a deliberate design choice that adds a small conceptual step for newcomers (understanding Adapter/AdapterMut before you can pass in audio buffers) but pays off by decoupling the resampler from any single audio buffer representation.

Used by 7 apps in this directory

TypeScript
54%
MIT

Anarlog

AI Assistants · Note Taking · Productivity

9,404

Anarlog is an open-source, local-first AI meeting notetaker that records, transcribes, and summarizes meetings entirely on your device — no cloud lock-in, no mandatory account, and every note saved as a plain markdown file you own forever.

View details
86
Repo Health
77
Technical
68
Dependency
Built with
TypeScript 54%
Rust 34%
Updated 4 days ago
TypeScript
64%
Other

Epicenter

Developer Tools · Knowledge Management · Note Taking

4,808

A local-first monorepo led by Whispering, an open-source speech-to-text app, built on an MIT toolkit that turns your data into plain Markdown and SQLite files you own instead of a database you rent.

View details
88
Repo Health
90
Technical
64
Dependency
Built with
TypeScript 64%
HTML 13%
Svelte 13%
Updated 5 days ago
Rust
59%
MIT

Handy

Productivity · Voice AI

32,320

Free, offline, open-source speech-to-text that pastes directly into any app on Windows, macOS, and Linux.

View details
87
Repo Health
78
Technical
72
Dependency
Built with
Rust 59%
TypeScript 30%
Updated 4 days ago
Rust
48%
MIT

Meetily

AI Assistants · Productivity

31,171

Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.

View details
85
Repo Health
72
Technical
67
Dependency
Built with
Rust 48%
TypeScript 29%
Updated 2 weeks ago
Rust
70%
AGPL 3.0

RustDesk

Networking

124,658

Open-source, self-hosted remote desktop built in Rust — your data, your infrastructure, no third-party cloud.

View details
93
Repo Health
84
Technical
71
Dependency
Built with
Rust 70%
Dart 22%
Updated 4 days ago
Rust
77%
AGPL 3.0

Spacedrive

Collaboration · File Storage

39,041

One file manager for all your devices and clouds — powered by a Virtual Distributed File System built in Rust.

View details
56
Repo Health
84
Technical
63
Dependency
Built with
Rust 77%
TypeScript 20%
Updated 2 months ago
MIT

YuE2 Studio

Mcp · Music Audio

320

Windows desktop studio that runs the YuE2 song model on your own NVIDIA GPU: it writes an editable sheet-music score first, then sings it as a full song with vocals, offline, with covers, LoRA training and an MCP server for agents.

View details
60
Repo Health
83
Technical
76
Dependency

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers