LFO shapes the instruments have: a symmetry sweep, pattern shapes, and humanize #130

Open
opened 2026-10-05 23:46:13 +00:00 by bcox · 0 comments
Owner

bcox asked on 2026-10-05 for a ticket for each engine gap in his moregaps.md feature table that no existing ticket covers. Engine claims are from reading the tree at f6aa8eba on main. Instrument claims are from that day's research, read mostly as archive.org OCR of the manuals by research agents and not re-checked; the sources are listed in that document. Nothing here is built, measured or listened to.

Summary

The LFO has six shapes -- saw, sine, triangle, pulse, sample-and-hold, random walk -- a rate, a slew, a start phase, and one parameter reinterpreted per shape: duty for the pulse, scatter for the walk (dsp/lfo.h:30-58). Three rows of the feature table are shapes it does not have.

  1. A symmetry sweep. The MS-20's modulation generator morphs from one sawtooth through triangle to the other on one knob, and its pulse from wide to narrow on the same knob; the Teisco S-60F and S-110F have the same control. Here the saw and triangle are separate shapes.
  2. Pattern shapes. The Chroma's sweep generator has sixteen shapes, six of them patterns: stepped sequences the sweep plays at its rate.
  3. Humanize. The ESQ-1 and SQ-80 have a humanize setting on each LFO, a random variation of the cycle.

The work, as a sketch

  1. Symmetry as the shape parameter for a skew shape: the VA oscillator's skew ramp is exactly this at audio rate, a ramp with its peak on a position (VaSkew, dsp/va_oscillator.h:214-222), and the LFO's one-parameter convention takes the position. Its pulse_width field already means duty for the pulse, so the knob is the same one.
  2. Patterns as a shape that reads a short step table at the rate, one step per wrap division; the table is patch data. Overlaps with a step sequence as a modulation source (#46, #47), which is the same thing with a clock from the song rather than the LFO.
  3. Humanize as a per-cycle random offset to the rate, drawn from the LFO's own generator on each wrap (the generator it has for sample-and-hold, dsp/lfo.h:292-297), with the amount as the one parameter for shapes that do not use it, or a second field.

Open

  • Whether 2 belongs here or entirely to #47 once a clock exists.
  • Whether humanize also varies the level, as the ESQ's may; the manual's description was not read closely.
bcox asked on 2026-10-05 for a ticket for each engine gap in his `moregaps.md` feature table that no existing ticket covers. Engine claims are from reading the tree at `f6aa8eba` on `main`. Instrument claims are from that day's research, read mostly as archive.org OCR of the manuals by research agents and not re-checked; the sources are listed in that document. **Nothing here is built, measured or listened to.** ## Summary The LFO has six shapes -- saw, sine, triangle, pulse, sample-and-hold, random walk -- a rate, a slew, a start phase, and one parameter reinterpreted per shape: duty for the pulse, scatter for the walk (`dsp/lfo.h:30-58`). Three rows of the feature table are shapes it does not have. 1. **A symmetry sweep.** The MS-20's modulation generator morphs from one sawtooth through triangle to the other on one knob, and its pulse from wide to narrow on the same knob; the Teisco S-60F and S-110F have the same control. Here the saw and triangle are separate shapes. 2. **Pattern shapes.** The Chroma's sweep generator has sixteen shapes, six of them patterns: stepped sequences the sweep plays at its rate. 3. **Humanize.** The ESQ-1 and SQ-80 have a humanize setting on each LFO, a random variation of the cycle. ## The work, as a sketch 1. Symmetry as the shape parameter for a skew shape: the VA oscillator's skew ramp is exactly this at audio rate, a ramp with its peak on a position (`VaSkew`, `dsp/va_oscillator.h:214-222`), and the LFO's one-parameter convention takes the position. Its `pulse_width` field already means duty for the pulse, so the knob is the same one. 2. Patterns as a shape that reads a short step table at the rate, one step per wrap division; the table is patch data. Overlaps with a step sequence as a modulation source (#46, #47), which is the same thing with a clock from the song rather than the LFO. 3. Humanize as a per-cycle random offset to the rate, drawn from the LFO's own generator on each wrap (the generator it has for sample-and-hold, `dsp/lfo.h:292-297`), with the amount as the one parameter for shapes that do not use it, or a second field. ## Open - Whether 2 belongs here or entirely to #47 once a clock exists. - Whether humanize also varies the level, as the ESQ's may; the manual's description was not read closely.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/tymbal#130
No description provided.