pub struct Features {
pub audio: AudioFeatures,
pub structural: StructFeatures,
pub vet: VetReport,
pub lufs_before: f64,
pub gain_db: f64,
pub peak_reduction_db: f64,
}Expand description
Everything the taste model and audition path need for one candidate.
Fields§
§audio: AudioFeaturesPerceptual descriptors of the normalized render.
structural: StructFeaturesRender-free structural descriptors of the term.
vet: VetReportRaw-render measurements from the vet gate.
lufs_before: f64Integrated loudness before normalization (LUFS).
gain_db: f64Gain applied (dB) — toward TARGET_LUFS, but never past
auracle_features::PEAK_CEILING.
peak_reduction_db: f64Makeup gain given up so the render would not clip, in dB (≥ 0).
Zero for most patches. Positive means this one auditions below
TARGET_LUFS because its crest factor would not let it reach the
target without going over full scale — so a surface comparing two
candidates’ levels can say which of them was pulled down and by how
much, rather than presenting a peak-limited patch as a quiet one.
#[serde(default)] is forward-looking rather than a migration.
Features cross the farm as crate::CachedFeatures within a single
boot, where the worker’s version stamp guarantees one build on both
ends, and nothing persists them across boots today — BankEntry stores
trees, so a reloaded pool is re-featurized under whatever normalizer is
current. The default matters the moment the persistent render cache
lands, and the thing to note there is that a row written before this
ceiling carries a gain_db that would clip: normalization changing
has to invalidate the cache namespace, not merely default a field.