Control from audio: an envelope follower, a trigger and a pitch tracker on the external input #118

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 audio now arrives: a channel's external input and sidechain are matrix sources (dsp/mod_source.h:84-89), kAbsDifference rectifies and kGreater compares (dsp/mod_ops.h:25-39). So a crude follower and a gate exist as matrix values. What is missing is the three things that turn a value into control:

  • smoothing, which is #35;
  • anything that fires an envelope from a value, which is #116;
  • a pitch tracker, which is new DSP.

The console strip's compressor has a detector (fabric/inserts.h:299-312), at the console and not in a voice. gaps.md records the family (a vocoder, cross-synthesis); this ticket is the three mod sources.

What the instruments do

  • MS-20's external signal processor: a pitch voltage (frequency to voltage), an envelope and a trigger from an incoming signal, with a band-pass pre-filter and a threshold, so a guitar or a voice plays the synth. The owner's manual's specification lists five jacks: amplifier out, band-pass filtered out, CV out, envelope out, trigger out.
  • ARP 2600: an envelope follower module.
  • SH-2, SH-09: an envelope-follower position on the filter's envelope switch, following the external audio's level.
  • CS-15, CS-5: EG 1 triggered from the external audio's level, with a trigger level control.
  • SH-5: the external input as an envelope trigger source, and into the ring modulator.
  • Pro-One: in its external mode the audio input makes a gate past a threshold that fires both envelopes and can step the sequencer and arpeggiator.
  • Pro 2: an envelope follower and a gate threshold on the external input.

The work, as a sketch

  • Follower: rectify (exists) then slew (#35); two entries. Or one op that does both, since a follower's attack and release are two slews.
  • Trigger: the comparator's edge, from #116.
  • Pitch: a zero-crossing counter with hysteresis behind a lowpass is what the MS-20's circuit is, roughly; a pitch source in octaves, with that method's octave errors and a latency of a cycle or two. Autocorrelation is the better tracker and the one that costs on the fabric. Either is a per-channel thing, since the input is channel-wide; the result is a shared source every voice can read.

Open

  • Scope and latency: the input reaches voices one sample late already; a tracker adds its window, which is deterministic (rule zero holds) but audible.
  • Whether the ESP's band-pass pre-filter is anything but a filter slot ahead of the detector.
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 audio now arrives: a channel's external input and sidechain are matrix sources (`dsp/mod_source.h:84-89`), `kAbsDifference` rectifies and `kGreater` compares (`dsp/mod_ops.h:25-39`). So a crude follower and a gate exist as matrix values. What is missing is the three things that turn a value into control: - smoothing, which is #35; - anything that fires an envelope from a value, which is #116; - a pitch tracker, which is new DSP. The console strip's compressor has a detector (`fabric/inserts.h:299-312`), at the console and not in a voice. `gaps.md` records the family (a vocoder, cross-synthesis); this ticket is the three mod sources. ## What the instruments do - MS-20's external signal processor: a pitch voltage (frequency to voltage), an envelope and a trigger from an incoming signal, with a band-pass pre-filter and a threshold, so a guitar or a voice plays the synth. The owner's manual's specification lists five jacks: amplifier out, band-pass filtered out, CV out, envelope out, trigger out. - ARP 2600: an envelope follower module. - SH-2, SH-09: an envelope-follower position on the filter's envelope switch, following the external audio's level. - CS-15, CS-5: EG 1 triggered from the external audio's level, with a trigger level control. - SH-5: the external input as an envelope trigger source, and into the ring modulator. - Pro-One: in its external mode the audio input makes a gate past a threshold that fires both envelopes and can step the sequencer and arpeggiator. - Pro 2: an envelope follower and a gate threshold on the external input. ## The work, as a sketch - Follower: rectify (exists) then slew (#35); two entries. Or one op that does both, since a follower's attack and release are two slews. - Trigger: the comparator's edge, from #116. - Pitch: a zero-crossing counter with hysteresis behind a lowpass is what the MS-20's circuit is, roughly; a pitch source in octaves, with that method's octave errors and a latency of a cycle or two. Autocorrelation is the better tracker and the one that costs on the fabric. Either is a per-channel thing, since the input is channel-wide; the result is a shared source every voice can read. ## Open - Scope and latency: the input reaches voices one sample late already; a tracker adds its window, which is deterministic (rule zero holds) but audible. - Whether the ESP's band-pass pre-filter is anything but a filter slot ahead of the detector.
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#118
No description provided.