Sample-and-hold of a chosen source on a chosen clock: a matrix entry with one word of state #117

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

bcox asked on 2026-10-05 for a ticket for each engine gap that the third set of instruments in his moregaps.md left without one. 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's kSampleHold shape draws its own random number on its own wrap (dsp/lfo.h:30-40, :292-297). Nothing samples any other signal, on any other clock. A matrix op is a function of a source and a via with no state (dsp/mod_ops.h:25-39); #35, the slew limiter, is the other entry that wants a word of state, and this is its sibling.

What the instruments do

  • MS-20: a panel module. Any patched signal, clocked by the modulation generator or an external pulse.
  • ARP 2600: the clock to the sample-and-hold's command, any patched signal in.
  • GX-1: the Solo manual's sample-and-hold can be clocked by any of the rhythm unit's drum sounds.
  • SH-5: samples LFO-1, LFO-2 or noise, with a sample time of 2 to 15 ms and a lag control.
  • Odyssey: a mixer of VCO 1's saw and square, VCO 2's square and noise, clocked by the LFO or the keyboard, with an output lag. The same mixer also feeds VCO 2 and the filter unsampled.
  • CAT: noise or VCO 1's mix, at the LFO rate.
  • Quadra: VCO 2 sampled on both edges of the LFO, sweeping the phase shifter.
  • OB-8: the sampled-vibrato mode samples a performance LFO.
  • Polymoog: a sample-and-hold on the VCF, of what was not read.

The work, as a sketch

  • An entry kind with state: on a rising edge of the via, hold the source. The via is then the clock, which makes any source a clock: an LFO pulse, a key gate, a comparator. The edge detector is the one #116 wants, so they share it.
  • Lag on the held value is #35.
  • Sampling an oscillator (Odyssey, CAT, Quadra): oscillators are matrix sources (dsp/va_layer.h:499-517) read at the output rate, so the held value is whatever that read lands on, which is what a sample-and-hold of an audio signal sounds like anyway; sample-exactness against the oscillator's tick is not the point.
  • Cost: one word of state per such entry, and the state has to live where the matrix's per-voice state does.
  • #35 (slew), #116 (edge detector), #118 (the same edge as a trigger).
bcox asked on 2026-10-05 for a ticket for each engine gap that the third set of instruments in his `moregaps.md` left without one. 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's `kSampleHold` shape draws its own random number on its own wrap (`dsp/lfo.h:30-40`, `:292-297`). Nothing samples any other signal, on any other clock. A matrix op is a function of a source and a via with no state (`dsp/mod_ops.h:25-39`); #35, the slew limiter, is the other entry that wants a word of state, and this is its sibling. ## What the instruments do - MS-20: a panel module. Any patched signal, clocked by the modulation generator or an external pulse. - ARP 2600: the clock to the sample-and-hold's command, any patched signal in. - GX-1: the Solo manual's sample-and-hold can be clocked by any of the rhythm unit's drum sounds. - SH-5: samples LFO-1, LFO-2 or noise, with a sample time of 2 to 15 ms and a lag control. - Odyssey: a mixer of VCO 1's saw and square, VCO 2's square and noise, clocked by the LFO or the keyboard, with an output lag. The same mixer also feeds VCO 2 and the filter unsampled. - CAT: noise or VCO 1's mix, at the LFO rate. - Quadra: VCO 2 sampled on both edges of the LFO, sweeping the phase shifter. - OB-8: the sampled-vibrato mode samples a performance LFO. - Polymoog: a sample-and-hold on the VCF, of what was not read. ## The work, as a sketch - An entry kind with state: on a rising edge of the via, hold the source. The via is then the clock, which makes any source a clock: an LFO pulse, a key gate, a comparator. The edge detector is the one #116 wants, so they share it. - Lag on the held value is #35. - Sampling an oscillator (Odyssey, CAT, Quadra): oscillators are matrix sources (`dsp/va_layer.h:499-517`) read at the output rate, so the held value is whatever that read lands on, which is what a sample-and-hold of an audio signal sounds like anyway; sample-exactness against the oscillator's tick is not the point. - Cost: one word of state per such entry, and the state has to live where the matrix's per-voice state does. ## Related - #35 (slew), #116 (edge detector), #118 (the same edge as a trigger).
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#117
No description provided.