Expand description
This crate provides a high level API for accessing and configuring a MiniDSP device.
To get started, start by instantiating the right transport. If the device is locally
connected via USB, use transport::hid::HidTransport
. If using the WI-DG
or connecting to
an instance of this program running the server
component, see 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(())
}
Re-exports§
pub use transport::MiniDSPError;
pub use biquad::Biquad;
pub use builder::Builder;
Modules§
- Basic biquad definition
- Device discovery integrated as the builder pattern
- Commands sent to the device and their responses
- Static device definitions
- EEPROM Addresses
- Functions for framing and unframing packets, and computing their checksums
- Utilities to get a mapping from the source name to the source id Most of this logic was translated from the cordova app
- TCP server compatible with the official mobile and desktop application
- Transport base traits for talking to devices Wraps a Stream + Sink backend into a transport
Structs§
- Helper object for controlling an on-device biquad filter
- Hardware id and dsp version
- Dialect represents the different encodings between devices
- A gain between the minimum and maximum allowed values
- Reference to a control having both a mute and gain setting
- Input channel control
- Settings applying to all outputs
- High-level MiniDSP Control API
- Output channel control
Enums§
Traits§
- Types that can be read from a contiguous memory representation