Iced Audio
An extension to the Iced GUI library with useful widgets for audio applications such as VST / LV2 plugins.
Widgets implemented
-
HSlider
- Horizontal Slider -
VSlider
- Vertical Slider -
Ramp
- Ramp used to control the easing between two points in time -
XYPad
- XY Pad for controlling two parameters at once -
ModRangeInput
- A dot used to control the range of modulation for a parameter. Styles for visual feedback of the modulation range exist for theHSlider
,VSlider
, andKnob
widgets. -
DBMeter
- A decibel meter. Note that any DSP and animation must be done manually. -
ReductionMeter
- a meter that displays the reduction of loudness in a signal. Note that any DSP and animation must be done manually.
Widgets partially implemented
-
Knob
- A basic knob widget. No texture style yet. There is also a known bug where input will stop when the mouse leaves the window under some conditions.
Take a look at the roadmap for a list of planned widgets.
Each parameter can be mapped to one of four ranges:
FloatRange
- a linear range of f32 valuesIntRange
- a discrete range of i32 values. This will cause the widget to "step" when moved.DBRange
- a logarithmic range of decibel values. Values around 0 dB will increment slower than values farther away from 0 dB.FreqRange
- a logarithmic range of frequency values. Each octave in the 10 octave spectrum (from 20 Hz to 20480 Hz) is spaced evenly.
Run examples with
cargo run --example inputs_tour --release
cargo run --example simple --release
cargo run --package db_meter --release
cargo run --package reduction_meter --release
Installation
Add iced
and iced_audio
as dependencies in your Cargo.toml
:
iced = { version = "0.1", features = ["image"] }
iced_audio = "0.2"
Both Iced Audio and Iced move fast and the master
branch can contain breaking changes! If
you want to learn about a specific release, check out the release list.
Simple Usage Example
This crate assumes you know the basics of how to use Iced. If you haven't alreay, please check it out here.
// Import iced modules.
use ;
// Import iced_audio modules.
use ;
// Create a unique identifier for each parameter. Note you may also use any
// type you want such as u32, i32, Strings, etc.
// The message when a parameter widget is moved by the user
Contributing / Feedback
Contributions are greatly appreciated! If you want to contribute, please read the official Iced contributing guidelines for more details.
Feedback is also welcome! You can open an issue or, if you want to talk,
come chat to our Zulip server. Moreover, you can find me (and a bunch of
awesome folks) over the #gui-and-ui
channels in
the Rust Community Discord. I go by BillyDM#3892
there.