pub struct TailFit {
pub release: Seconds,
pub weight: f64,
pub rt60: Seconds,
pub rt60_observed: bool,
pub residual: Decibels,
pub rt60_floor: Seconds,
pub hold_bend: Decibels,
}Expand description
The tail model fitted to a note after its note-off.
Fields§
§release: SecondsThe linear release.
weight: f64The weight of the tail at the note-off, over the sustain level.
rt60: SecondsThe RT60 of the tail.
rt60_observed: boolThe frames fitted span enough of the RT60 to read it.
residual: DecibelsThe RMS of the fit in dB, over the frames fitted.
rt60_floor: SecondsThe shortest RT60 that the filter of the track can show.
hold_bend: DecibelsThe median size of the second difference of the held level in dB, over
TAIL_HOLD_FRAMES before the knee, TAIL_HOLD_LAG frames each way.
Implementations§
Source§impl TailFit
impl TailFit
Sourcepub fn is_smooth(&self) -> bool
pub fn is_smooth(&self) -> bool
The tail is heavy but fits too smoothly for a reverb, whose level wobbles: the note’s own exponential release, with no linear part to find.
Sourcepub fn reads_rt60(&self) -> bool
pub fn reads_rt60(&self) -> bool
The fit shows an RT60 of a tail: one heavy enough, read long enough, past what the filter shows by itself, and not a release of the note’s own.
Trait Implementations§
impl Copy for TailFit
impl StructuralPartialEq for TailFit
Auto Trait Implementations§
impl Freeze for TailFit
impl RefUnwindSafe for TailFit
impl Send for TailFit
impl Sync for TailFit
impl Unpin for TailFit
impl UnsafeUnpin for TailFit
impl UnwindSafe for TailFit
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> CloneAny for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more