Phase distortion: a phase warped before the wave function, the Casio CZ's oscillator and the phase-shaping family #142
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#142
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?
bcox asked on 2026-10-05 for a ticket for each family in his
gaps.mdthat has none. Engine claims are from reading the tree atcd68bd3eonmain; literature named below is from recollection and was not re-read. Nothing here is built, measured or listened to.What the tree has
Phaseis unsigned Q0.32 over one cycle (dsp/phase.h), andSine(Phase)indsp/sine.hreads a table from it, so every wave function in the VA oscillator is a function of that word.VaShapeis the oscillator's shapes, appended and never reordered, with a comment reserving a wavetable shape (#115). None of them warps the phase before a function.VaMorphOrder::kSkewRamp, withVaSkew(a rise and a fall whose sum is the cycle, each with anIncrementReciprocal) andNaiveSkewRaw, computes a piecewise-linear ramp whose peak sits at the morph position. That ramp is output as the waveform itself. Read throughSineinstead, it is the CZ's "sawtooth": a two-segment warp, fast then slow, into a cosine, with the knee's position as the DCW amount. So the shape machinery is one lookup short of the instrument, by construction and untried.What the family is
Shape and cost
A warp stage ahead of the shape functions: a map from Q0.32 to Q0.32, piecewise linear with two to four breakpoints, the breakpoints as mod destinations, since the DCW envelope is the whole instrument. Per segment one compare and one multiply, before the lookup that exists;
NaiveSkewRawis the two-segment version with its reciprocals precomputed. Cheapest item ongaps.md's list in fabric, as it says, and wholly absent.Band-limiting is the design question. A warp makes a slope discontinuity, not a step, so the PolyBLEP corrections
ShapeSampleapplies to edges do not apply; the CZ aliased, and the literature's answer is a BLAMP (a band-limited ramp) at each knee. Whether the oscillator's oversample derivation can price the warp from the patch, as it prices every other shape, is the thing to settle first.Open
Related
#115, #124.