6 个版本

0.1.4 2022 年 1 月 15 日
0.0.3 2021 年 1 月 13 日

543音频

每月 32 次下载
用于 minidsp-daemon

Apache-2.0LGPL-3.0

665KB
17K SLoC

此包提供了访问和配置 MiniDSP 设备的高级 API。要开始,首先实例化正确的传输。如果设备通过 USB 本地连接,请使用 transport::hid::HidTransport。如果使用 WI-DG 或连接到运行 server 组件的此程序实例,请参阅 transport::net::StreamTransport

use anyhow::Result;
use futures::StreamExt;
use minidsp::{
    transport::{hid, Multiplexer},
    Builder, Channel, Gain, MiniDSP,
};

#[tokio::main]
async fn main() -> Result<()> {
    // Get a list of local devices
    let mut builder = Builder::new();
    builder.with_default_usb().unwrap();

    let mut devices: Vec<_> = builder
        // Probe each candidate device for its hardware id and serial number
        .probe()
        // Filter the list to keep the working devices
        .filter_map(|x| async move { x.ok() })
        .collect()
        .await;

    // Use the first device for further commands
    let dsp = devices
        .first()
        .expect("no devices found")
        .to_minidsp()
        .expect("unable to open device");

    let status = dsp.get_master_status().await?;
    println!("Master volume: {:.1}", status.volume.unwrap().0);

    // Activate a different configuration
    dsp.set_config(2).await?;

    // Set the input gain for both input channels
    for i in 0..2 {
        dsp.input(i)?.set_gain(Gain(-10.)).await?;
    }

    // Mute the last output channel
    dsp.output(3)?.set_mute(true).await?;

    Ok(())
}

依赖关系

~14–26MB
~383K SLoC