A shared LFO with every shape #8

Open
opened 2026-10-12 02:21:22 +00:00 by bcox · 2 comments
Owner

One shared LFO in engine/, offering the union of every instrument's shapes, as the arpeggiator and the effects offer theirs.

Today each instrument makes its own:

  • SEM family (instruments/sem/lfo.h): sine, square (with the OB-X's downward-only switch), sample and hold, sawtooth, reverse sawtooth, triangle.
  • JX family (instruments/jx/lfo.h): random, square, sine, triangle.
  • Korgs and Juno (engine/modulation_generator.h): triangle, rising and falling sawtooth, square.
  • SH-101 (instruments/sh101/modulator.h): triangle, square, random, noise; lfo.sine rounds the triangle.
  • SH-5 (instruments/sh5/modulators.h) and the ARPs (engine/keyed_lfo.h): sawtooth; sine, triangle and square.
  • Jupiters (instruments/jupiter/lfo.h): six shapes, with a fast random.

To decide:

  • What each instrument's lfo.wave number means once the shapes are shared. Stored patches hold the numbers, so either each instrument keeps its own numbering, mapped onto the shared list, or the patch file learns a renaming.
  • Whether the OB-X's downward-only square, the delay and fade, and starting the wave over at a key belong in the shared LFO.
  • Shapes not yet anywhere: the OB-8's sampled-vibrato LFO, the lever LFO's triangle and noise.
  • Still unknown, wanting a schematic or a recording: whether the Odyssey gives a sine or a triangle, the MC-202's rounder wave, and whether the OB-8's smooth wave is a sine or a triangle.

Done already (fd77e42, 2026-10-14): a triangle on the SEM family's two LFOs (lfo.wave 5) and on the JX's (lfo.wave 3).

One shared LFO in `engine/`, offering the union of every instrument's shapes, as the arpeggiator and the effects offer theirs. Today each instrument makes its own: - SEM family (`instruments/sem/lfo.h`): sine, square (with the OB-X's downward-only switch), sample and hold, sawtooth, reverse sawtooth, triangle. - JX family (`instruments/jx/lfo.h`): random, square, sine, triangle. - Korgs and Juno (`engine/modulation_generator.h`): triangle, rising and falling sawtooth, square. - SH-101 (`instruments/sh101/modulator.h`): triangle, square, random, noise; `lfo.sine` rounds the triangle. - SH-5 (`instruments/sh5/modulators.h`) and the ARPs (`engine/keyed_lfo.h`): sawtooth; sine, triangle and square. - Jupiters (`instruments/jupiter/lfo.h`): six shapes, with a fast random. To decide: - What each instrument's `lfo.wave` number means once the shapes are shared. Stored patches hold the numbers, so either each instrument keeps its own numbering, mapped onto the shared list, or the patch file learns a renaming. - Whether the OB-X's downward-only square, the delay and fade, and starting the wave over at a key belong in the shared LFO. - Shapes not yet anywhere: the OB-8's sampled-vibrato LFO, the lever LFO's triangle and noise. - Still unknown, wanting a schematic or a recording: whether the Odyssey gives a sine or a triangle, the MC-202's rounder wave, and whether the OB-8's smooth wave is a sine or a triangle. Done already (fd77e42, 2026-10-14): a triangle on the SEM family's two LFOs (`lfo.wave` 5) and on the JX's (`lfo.wave` 3).
Author
Owner

From #19, by the owner's word on 2026-10-12: add the JX-8P's triangle. Its parameter table calls the LFO's first shape a sine and its MIDI table calls the same position a triangle; mini-JX has a sine there (instruments/jx/lfo.h), with a square and a random level. Which the hardware gives is not known; a triangle beside the sine lets a patch have either.

From #19, by the owner's word on 2026-10-12: add the JX-8P's triangle. Its parameter table calls the LFO's first shape a sine and its MIDI table calls the same position a triangle; mini-JX has a sine there (`instruments/jx/lfo.h`), with a square and a random level. Which the hardware gives is not known; a triangle beside the sine lets a patch have either.
Author
Owner

Two things from the night of 2026-10-12 that bear on this:

  • The OB-X's square that goes downward only is now a switch on mini-SEM, lfo.square_down and lfo2.square_down (#37): the square at nothing and down by the depth, where otherwise it swings either side. Whether a square that goes one way belongs in a shared LFO is a question for here.
  • Still put off to this issue: the Odyssey's sine or triangle, the JX-8P's triangle where its panel says sine, and the MC-202's rounder wave, which mini-101's lfo.sine stands for.
Two things from the night of 2026-10-12 that bear on this: - **The OB-X's square that goes downward only** is now a switch on mini-SEM, `lfo.square_down` and `lfo2.square_down` (#37): the square at nothing and down by the depth, where otherwise it swings either side. Whether a square that goes one way belongs in a shared LFO is a question for here. - Still put off to this issue: the Odyssey's sine or triangle, the JX-8P's triangle where its panel says sine, and the MC-202's rounder wave, which mini-101's `lfo.sine` stands for.
bcox changed title from LFO shapes to A shared LFO with every shape 2026-10-15 00:55:21 +00:00
Sign in to join this conversation.
No labels
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/mini-800#8
No description provided.