FM: RequiredBandwidthRatio worst-cases the modulators over every wave but reads the carrier through the reachable lane #68
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#68
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
There is a deliberate asymmetry in
FmPairLayer::RequiredBandwidthRatioafter branchfm-followups, and it is worth revisiting with a measurement.HarmonicPeakstakes the loudest each harmonic reaches across every wave in amodulator's table, whatever the wave-position lane can actually reach.
CarrierHarmonicCeilingreads the carrier's table throughReachableLaneMaximum(patch, kWavePosition), so a patch parked on wave 0 ofInit()'s sine-to-square morph is charged for the sine.The asymmetry was priced rather than overlooked: being coarse about a modulator's
table costs a rung or two, while being coarse about the carrier costs the whole family
and more, because the carrier's harmonic number multiplies the reach. A blanket worst
case there would put the ordinary FM patch on the ceiling.
But the modulator side is now the loose one, and tightening it would lower shipped
provisioning -- which is the direction that needs evidence before anyone touches it,
not after. It wants:
waves are narrower than its widest wave. If the answer is zero, this is a no-op and
should be closed as one.
plugin/fm_alias_test.cc's grid, because lowering a rung is exactly thechange that can put a cell under the -60 dB bar.
Not a tidiness pass. It is a provisioning reduction, and the alias grid is the only
thing that can say whether it is safe.