#sound #api-bindings

rtaudio

为RtAudio提供的安全的Rust封装和绑定

7个版本

0.3.3 2023年12月11日
0.3.2 2023年8月1日
0.3.1 2023年7月24日
0.2.1 2023年6月15日
0.1.0 2023年5月31日

#167 in 音频

MIT许可证

58KB
1K SLoC

RtAudio-rs

Documentation Crates.io License

RtAudio(版本6)提供的安全的Rust封装和绑定。

使用示例

use rtaudio::{Api, Buffers, DeviceParams, SampleFormat, StreamInfo, StreamOptions, StreamStatus};

fn main() {
    let host = rtaudio::Host::new(Api::Unspecified).unwrap();
    let out_device = host.default_output_device().unwrap();

    let mut stream_handle = host
        .open_stream(
            Some(DeviceParams {
                device_id: out_device.id,
                num_channels: 2,
                first_channel: 0,
            }),
            None,
            SampleFormat::Float32,
            out_device.preferred_sample_rate,
            256,
            StreamOptions::default(),
            |error| eprintln!("{}", error),
        )
        .unwrap();

    let mut phasor = 0.0;
    let phasor_inc = 440.0 / stream_handle.info().sample_rate as f32;

    stream_handle
        .start(
            move |buffers: Buffers<'_>, _info: &StreamInfo, _status: StreamStatus| {
                if let Buffers::Float32 { output, input: _ } = buffers {
                    // By default, buffers are interleaved.
                    for frame in output.chunks_mut(2) {
                        // Generate a sine wave at 440 Hz at 50% volume.
                        let val = (phasor * std::f32::consts::TAU).sin() * 0.5;
                        phasor = (phasor + phasor_inc).fract();

                        frame[0] = val;
                        frame[1] = val;
                    }
                }
            },
        )
        .unwrap();

    // Wait 3 seconds before closing.
    std::thread::sleep(std::time::Duration::from_millis(3000));
}

先决条件

CMake在所有平台上都是必需的。

Linux

apt install cmake pkg-config libasound2-dev libpulse-dev

如果启用了jack_linux特性,那么还需要安装jack开发头文件

apt install libjack-dev

MacOS

安装CMake:选项1

https://cmake.org/下载。

安装CMake:选项2

使用Homebrew安装

brew install cmake

Windows

安装CMake

https://cmake.org/下载。

特性

默认情况下,Linux上的Jack和Windows上的ASIO是禁用的。您可以使用jack_linuxasio特性来启用它们。

rtaudio = { version = "0.3.2", features = ["jack_linux", "asio"] }

注意

绑定是从官方的C头文件创建的。没有提供对C++接口的绑定。

目前,所有平台上都从源代码构建了一个静态库。一旦RtAudio版本6在Linux软件包管理器中普遍可用,我可能会将其更改为在Linux上链接到动态库。

我还没有找到让MacOS上的Jack工作的方法。如果您知道如何在MacOS上安装和链接Jack库,请告诉我。

我还没有在每个平台上彻底测试每个API。如果您在构建过程中遇到任何错误或问题,请创建一个问题。

依赖项

~0.7–1MB
~22K SLoC