#music #audio-processing #audio-library #soundtouch

sys soundtouch-ffi

Rust bindings to the SoundTouch C++ audio library

6 releases

0.3.0 May 11, 2025
0.2.1 May 11, 2025
0.2.0 Oct 17, 2023
0.1.2 Oct 15, 2023

#1453 in Audio

Download history 17/week @ 2025-05-30 20/week @ 2025-06-06 20/week @ 2025-06-13 31/week @ 2025-06-20 88/week @ 2025-06-27 45/week @ 2025-07-04 29/week @ 2025-07-11 36/week @ 2025-07-18 13/week @ 2025-07-25 79/week @ 2025-08-01 30/week @ 2025-08-08 5/week @ 2025-08-15 13/week @ 2025-08-22 35/week @ 2025-08-29 23/week @ 2025-09-05 37/week @ 2025-09-12

111 downloads per month
Used in 3 crates (via soundtouch)

LGPL-2.1

1MB
8K SLoC

C++ 4.5K SLoC // 0.3% comments Visual Studio Project 1K SLoC Rust 836 SLoC // 0.0% comments C# 727 SLoC // 0.4% comments Pascal 367 SLoC // 0.2% comments Java 187 SLoC // 0.2% comments Visual Studio Solution 138 SLoC Batch 108 SLoC Automake 77 SLoC // 0.7% comments .NET Resource 58 SLoC // 0.5% comments M4 30 SLoC // 0.5% comments Shell 15 SLoC // 0.4% comments

Contains (Windows DLL, 475KB) NAudio.dll, (Windows DLL, 150KB) SoundTouch.dll, (JAR file, 55KB) gradle-wrapper.jar, (obscure autoconf code, 11KB) soundtouch-2_3_2/configure.ac

soundtouch-ffi

Crates.io Documentation

Rust bindings to the SoundTouch C++ audio library.

There is already a soundtouch-sys crate, but it hasn't been updated in 5 years and doesn't use static linking so I made this one. This crate also includes other structs in the library such as BPMDetect and FIFOSampleBuffer, which the sys crate is missing.

The version of SoundTouch bundled with this crate is 2.3.2 (latest as of October 2023).

If you're looking for a safe wrapper around these bindings I also made a crate for that: https://crates.io/crates/soundtouch.

Default Linking Behavior

This crate exposes the bundled and dynamic flags for overriding and configuring static and dynamic linking respectively. If neither flag is provided, then the following behavior is used for each platform.

Platform Default Linking
Linux & BSD (non-musl targets) Dynamic
Linux (musl target) Static (bundled)
macOS Static (bundled)
Windows Static (bundled)

Dependencies

~0–2.2MB
~42K SLoC