# Iced Audio
[](https://docs.rs/iced_audio)
[](https://crates.io/crates/iced_audio)
[](https://github.com/iced-rs/iced_audio/blob/main/LICENSE)
[](https://iced.zulipchat.com)
An extension to the [Iced](https://github.com/iced-rs/iced) GUI library with useful widgets for audio applications such as VST3 / [CLAP] plugins.
[more screenshots](https://github.com/iced-rs/iced_audio/tree/main/screenshots)
## Included Widgets
* `HSlider` - Horizontal Slider
* `VSlider` - Vertical Slider
* `Knob` - A classic knob widget
* `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 that add visual feedback of the modulation range exist for the `HSlider`, `VSlider`, and `Knob` widgets.
## Parameters
All widgets (with the exception of `XYPad`) borrow the same "virtual slider" input logic. Sliders, knobs, ramps, etc, are essentially just different ways to render the output of a virtual slider. You can also build your own custom virtual slider widgets that render whatever you want.
Each virtual slider operates on a normalized float value in the range `[0.0..1.0]`. Four mapping functions are included:
* `FloatRange` - a linear range of f32 values
* `IntRange` - a discrete range of i32 values. This will cause the widget to "step" when moved.
* `LogDBRange` - 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.
Custom mapping functions can be created as well.
## Audio plugins
If you wish to use `iced_audio` for audio plugins, check out these other crates:
* [nice-plug](https://codeberg.org/RustAudio/nice-plug) - Complete audio plugin development framework for VST3, [CLAP], and standalone targets with support for Iced.
* [clack-plugin](https://github.com/prokopyl/clack) - An easy way to create [CLAP] plugins in Rust.
* [iced_baseview](https://codeberg.org/RustAudio/iced_baseview) - Run Iced on the [baseview](https://github.com/RustAudio/baseview) windowing backend (use in conjuction with a crate like `clack-plugin`).
## Crate features
Note, you need to enable the `canvas` feature in iced for things to render properly. You also need to enable the `image` feature if you want to use the texture styles.
* `all` (default) - Enables all widgets
* `knob` (default) - Enables the knob widget
* `h_slider` (default) - Enables the horizontal slider widget
* `v_slider` (default) - Enables the vertical slider widget
* `ramp` (default) - Enables the ramp widget
* `xy_pad` (default) - Enables the XY pad widget
## Contributing / Feedback
Contributions are greatly appreciated! Before contributing, please read the official Iced [contributing guidelines](https://github.com/iced-rs/iced/blob/master/CONTRIBUTING.md).
[CLAP]: https://cleveraudio.org/