fix(dock): TRAX ladder gets the mic's ballistics (and a 33 Hz beat)
Reported: the TRAX bar moves, but its sampling looks far slower than the mic meter. Cause: the TRAX number was a raw instantaneous peak per metering block — a stutter sampled by the UI timer, with no smoothing. The mic looks fluid because it is smoothed at audio-callback rate. Fix: the player now smooths its measured level with the SAME curve the mic uses (MeterScale.NextLevel: fast attack, gentle decay), and the dock's meter clock runs at ~30 Hz instead of 20. Two ladders that move alike, because they are the same ballistics. Guard: MeterScaleTests pins the attack/decay behaviour alongside peak-hold.
This commit is contained in:
@@ -27,6 +27,12 @@ public class MeterScaleTests
|
||||
Assert.Equal(1f, MeterScale.ToFraction(+12f));
|
||||
Assert.Equal(0f, MeterScale.ToFraction(-120f));
|
||||
|
||||
// Level ballistics: a jump is followed quickly, a drop falls gently — the same curve that
|
||||
// makes the mic meter look fluid. Raw peaks at a 30 Hz UI tick stutter without it.
|
||||
Assert.Equal(0.6f, MeterScale.NextLevel(0f, 1f), 3); // attack
|
||||
Assert.True(MeterScale.NextLevel(0.9f, 0.1f) > 0.8f); // decay is gentle
|
||||
Assert.True(MeterScale.NextLevel(0.1f, 0.9f) > 0.5f); // rise is fast
|
||||
|
||||
// Peak hold rises instantly, then decays at the stated rate.
|
||||
Assert.Equal(0.8f, MeterScale.NextPeak(0.2f, 0.8f, 0.05f));
|
||||
Assert.Equal(0.7f, MeterScale.NextPeak(0.8f, 0.1f, 0.1f / 0.35f), 3); // 0.1 fall at 0.35/s
|
||||
|
||||
Reference in New Issue
Block a user