pub enum FloatRange {
    Linear {
        min: f32,
        max: f32,
    },
    Skewed {
        min: f32,
        max: f32,
        factor: f32,
    },
    SymmetricalSkewed {
        min: f32,
        max: f32,
        factor: f32,
        center: f32,
    },
    Reversed(&'static FloatRange),
}
Expand description

A distribution for a floating point parameter’s range. All range endpoints are inclusive.

Variants§

§

Linear

Fields

§min: f32
§max: f32

The values are uniformly distributed between min and max.

§

Skewed

Fields

§min: f32
§max: f32
§factor: f32

The range is skewed by a factor. Values above 1.0 will make the end of the range wider, while values between 0 and 1 will skew the range towards the start. Use FloatRange::skew_factor() for a more intuitively way to calculate the skew factor where positive values skew the range towards the end while negative values skew the range toward the start.

§

SymmetricalSkewed

Fields

§min: f32
§max: f32
§factor: f32
§center: f32

The same as FloatRange::Skewed, but with the skewing happening from a central point. This central point is rescaled to be at 50% of the parameter’s range for convenience of use. Git blame this comment to find a version that doesn’t do this.

§

Reversed(&'static FloatRange)

A reversed range that goes from high to low instead of from low to high.

Implementations§

source§

impl FloatRange

source

pub fn skew_factor(factor: f32) -> f32

Calculate a skew factor for FloatRange::Skewed and FloatRange::SymmetricalSkewed. Positive values make the end of the range wider while negative make the start of the range wider.

source

pub fn gain_skew_factor(min_db: f32, max_db: f32) -> f32

Calculate a skew factor for FloatRange::Skewed that makes a linear gain parameter range appear as if it was linear when formatted as decibels.

source

pub fn normalize(&self, plain: f32) -> f32

Normalize a plain, unnormalized value. Will be clamped to the bounds of the range if the normalized value exceeds [0, 1].

source

pub fn unnormalize(&self, normalized: f32) -> f32

Unnormalize a normalized value. Will be clamped to [0, 1] if the plain, unnormalized value would exceed that range.

source

pub fn previous_step( &self, from: f32, step_size: Option<f32>, finer: bool ) -> f32

The range’s previous discrete step from a certain value with a certain step size. If the step size is not set, then the normalized range is split into 50 segments instead. If finer is true, then this is upped to 200 segments.

source

pub fn next_step(&self, from: f32, step_size: Option<f32>, finer: bool) -> f32

The range’s next discrete step from a certain value with a certain step size. If the step size is not set, then the normalized range is split into 100 segments instead.

source

pub fn snap_to_step(&self, value: f32, step_size: f32) -> f32

Snap a value to a step size, clamping to the minimum and maximum value of the range.

Trait Implementations§

source§

impl Clone for FloatRange

source§

fn clone(&self) -> FloatRange

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for FloatRange

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for FloatRange

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for Twhere U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Any for Twhere T: Any,

§

impl<T> CloneAny for Twhere T: Any + Clone,

§

impl<S, T> Duplex<S> for Twhere T: FromSample<S> + ToSample<S>,