6 releases
| new 0.2.4 | Dec 20, 2025 |
|---|---|
| 0.2.3 | Dec 12, 2025 |
| 0.2.2 | Mar 5, 2024 |
| 0.2.1 | Nov 13, 2022 |
| 0.1.0 | Jul 5, 2019 |
#662 in Audio
33,264 downloads per month
Used in 13 crates
(2 directly)
82KB
1.5K
SLoC
asio-sys
Low-level Rust bindings for the Steinberg ASIO SDK.
ASIO (Audio Stream Input/Output) is a low-latency audio API for Windows that provides direct hardware access, bypassing the Windows audio stack for minimal latency.
Overview
asio-sys provides raw FFI bindings to the ASIO SDK, automatically generated using bindgen. This crate is used by cpal's ASIO backend to provide low-latency audio on Windows.
Note: Most users should use cpal's safe, cross-platform API rather than using asio-sys directly.
Features
- Automatic binding generation from ASIO SDK headers
- Low-level access to ASIO driver functionality
- Support for both MSVC and MinGW toolchains
- Automated ASIO SDK download and setup during build
Requirements
Windows
- LLVM/Clang: Required for bindgen to generate bindings
- Install via LLVM downloads or
choco install llvm
- Install via LLVM downloads or
- ASIO SDK: Automatically downloaded during build from Steinberg
- Or set
CPAL_ASIO_DIRenvironment variable to point to a local SDK
- Or set
Build Dependencies
bindgen- Generates Rust bindings from C/C++ headerscc- Compiles the ASIO SDK C++ fileswalkdir- Finds SDK files
Usage
Add to your Cargo.toml:
[dependencies]
asio-sys = "0.2"
Example
use asio_sys as sys;
fn main() {
// Load ASIO driver
let driver_name = "ASIO4ALL v2"; // Your ASIO driver name
unsafe {
// Initialize ASIO
let drivers = sys::get_driver_names();
println!("Available drivers: {drivers:?}");
// Load a driver
match sys::load_asio_driver(driver_name) {
Ok(driver) => println!("Loaded driver: {driver_name}"),
Err(e) => eprintln!("Failed to load driver: {e:?}"),
}
}
}
Environment Variables
CPAL_ASIO_DIR: Path to ASIO SDK directory (optional)- If not set, the SDK is automatically downloaded during build
- Example:
set CPAL_ASIO_DIR=C:\path\to\asiosdk
Platform Support
- Windows (MSVC and MinGW)
- x86_64 (64-bit)
- i686 (32-bit)
ASIO is Windows-only. This crate will not build on other platforms.
Safety
This crate provides raw FFI bindings to C++ code. Almost all functions are unsafe and require careful handling:
- Memory management is manual
- Callbacks must be properly synchronized
- Driver state must be carefully managed
- See ASIO SDK documentation for details
License
Licensed under the Apache License, Version 2.0. See LICENSE for details.
The ASIO SDK is owned by Steinberg Media Technologies GmbH. Users must comply with Steinberg's licensing terms.
Contributing
Contributions are welcome! Please submit issues and pull requests to the cpal repository.
Resources
Dependencies
~0.2–3MB
~59K SLoC