Expand description
The standard audition phrase.
Audio features are only comparable across patches when every patch is rendered under an identical stimulus — same notes, same timing, same RNG seed for noise. This module owns that stimulus.
§The v2 phrase, and why each segment exists
The original 3-note phrase (0.6 s stab / 0.25 s stab / 0.8 s low note) was the loop’s weakest link, and the deficit compounded with every correctness fix: it could not discriminate slow pads (a 2 s attack was silent for most of the stimulus), anything modulated below ~1 Hz (no register-constant segment long enough to hold a modulation cycle), anything above Eb4 (its highest note), or how a patch stacks polyphonically (strictly monophonic) — so the grammar could express patches the audition could never reveal, and the taste model was asked to learn preferences over evidence that wasn’t in φ. The v2 default covers each hole with the cheapest segment that reveals it:
- C4 held 1.8 s — the attack window (onset → next onset) is now
2.0 s instead of 0.75 s, and a register-constant sustain long enough
that sub-Hz modulation completes most of a cycle
(
crate::audio::AudioFeatures::held_centroid_stdmeasures it here). - C5 stab — one octave above the old ceiling; with the fixed 0.5
keytracking this is where dark patches reveal whether they speak at all
up high (
crate::audio::AudioFeatures::high_ratio). - C4+E4 dyad (
Note::chord) — a second compiled voice, gate-synced with the main voice, reveals intermodulation and mud when stacked (crate::audio::AudioFeatures::chord_flatness_delta). A dyad rather than a triad because render cost is per-voice-second and pairwise intermodulation is the first-order phenomenon. - C3 held + 1.1 s release window — bass register, and kept last so the tail measurement (final 300 ms) still sees release length and delay/reverb tails, not a truncated chord decay.
~5.0 s of audio, ~2× the render cost of v1 (measured; the dyad’s second
voice is the difference between wall seconds and rendered voice-seconds).
Changing the stimulus changes what every audio feature means, which is
why crate::audio::AudioFeatures::NAMES carry a stimulus tag — see the
migration note there.
Structs§
- Note
- One note of the phrase.
- Phrase
Spec - The audition stimulus: notes, sample rate, and the RNG seed used for any stochastic module (noise, drift) so renders are bit-reproducible.