#steinberg #asio #sound #audio-sound

azo

Re-implementation of ASIO (Audio Stream Input/Output)

8 releases

Uses new Rust 2024

new 0.0.8 Aug 5, 2026
0.0.7 Jul 28, 2026

#517 in Audio

MIT license

41KB
758 lines

azo

is a re-implementation of Steinberg's ASIO (Audio Stream Input/Output) protocol.

Not an ASIO SDK wrapper

If you are looking for Rust bindings to the official ASIO SDK by Steinberg, take a look at the asio-sys crate instead.

azo doesn't use the SDK, it instead directly interacts with the underlying COM objects exposed by the drivers.

Multi-driver support

With azo you can load and interact with multiple drivers at the same time, without limitations.

Windows only

Technically, ASIO is platform agnostic. However, the spec does not define how drivers are to be discovered on other platforms, and is in general very Windows centric, which is why azo is (at this time) exclusive to Windows.

Getting started

from examples/hello_world.rs:

fn main() {
    let all = azo::discover_drivers().unwrap();
    let driver = all[0].create_instance().unwrap();

    driver.init(None).unwrap();
    let rate = driver.get_sample_rate().unwrap();

    println!("current sample rate: {rate}");
}

example output:

current sample rate: 44100

More /examples are available.

Dependencies

~1–2.5MB
~41K SLoC