FM operator at a fixed frequency: the DX7 mode the importer refuses #126

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. Nothing here is built, measured or listened to.

Summary

A DX7 operator is either a ratio of the note or a fixed frequency, 1 Hz to 9772 Hz in its coarse and fine steps. The importer refuses a voice with a fixed-frequency operator in any stack: "is in fixed-frequency mode, which the FM pair has no equivalent of" (dx7/translate.cc:659-662). The VA oscillator has key follow as an amount with a pivot key (dsp/va_oscillator.h:1088-1098), so a fixed-pitch oscillator exists there; the FM pair's modulators are ratios of the layer's pitch (kFmRatio, kFmRatio2, dsp/fm_pair_layer.h:326-332, :397), and the carrier follows the note.

Fixed-frequency operators are how DX7 voices make bells and clangs with partials that do not move with the key, and a fixed-frequency modulator on a keyed carrier gives a sideband spacing that is constant across the keyboard.

What the lanes allow today, as read

  • A fixed-frequency modulator is a ratio that falls as the note rises: ratio = f_fixed / f_note, exponential in key. kFmRatio is a matrix destination (dsp/fm_pair_layer.h:1120-1128), and kExpScale gives the exponential (dsp/mod_ops.h:150); a scale-mode entry can only attenuate (dsp/mod_matrix.h:173-181), which is the right direction if the ratio is authored for the lowest key. Untried, and the ratio lane's range may not reach a 1 Hz modulator on a C6 carrier.
  • A fixed-frequency carrier has no route: the carrier's pitch is the layer's.

The work, as a sketch

  • A per-operator mode, ratio or fixed, with a frequency in hertz for the fixed case, on the carrier and on each modulator. The importer then translates the mode instead of refusing.
  • The index law interacts: under kFrequency the index is d / fm, and a fixed fm makes it constant across the keyboard, which is the DX7's behavior for that operator.
  • #65's keytrack exponent is the continuous version of this for a modulator: exponent 0 is a ratio, and a fixed frequency is the limit where the modulator's key follow is zero.

Open

  • Whether the FM pair's oversampling derivation, which reads the modulators' ratios to bound the bandwidth, takes a fixed frequency in stride.
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`. **Nothing here is built, measured or listened to.** ## Summary A DX7 operator is either a ratio of the note or a fixed frequency, 1 Hz to 9772 Hz in its coarse and fine steps. The importer refuses a voice with a fixed-frequency operator in any stack: "is in fixed-frequency mode, which the FM pair has no equivalent of" (`dx7/translate.cc:659-662`). The VA oscillator has key follow as an amount with a pivot key (`dsp/va_oscillator.h:1088-1098`), so a fixed-pitch oscillator exists there; the FM pair's modulators are ratios of the layer's pitch (`kFmRatio`, `kFmRatio2`, `dsp/fm_pair_layer.h:326-332`, `:397`), and the carrier follows the note. Fixed-frequency operators are how DX7 voices make bells and clangs with partials that do not move with the key, and a fixed-frequency modulator on a keyed carrier gives a sideband spacing that is constant across the keyboard. ## What the lanes allow today, as read - A fixed-frequency modulator is a ratio that falls as the note rises: `ratio = f_fixed / f_note`, exponential in key. `kFmRatio` is a matrix destination (`dsp/fm_pair_layer.h:1120-1128`), and `kExpScale` gives the exponential (`dsp/mod_ops.h:150`); a scale-mode entry can only attenuate (`dsp/mod_matrix.h:173-181`), which is the right direction if the ratio is authored for the lowest key. Untried, and the ratio lane's range may not reach a 1 Hz modulator on a C6 carrier. - A fixed-frequency carrier has no route: the carrier's pitch is the layer's. ## The work, as a sketch - A per-operator mode, ratio or fixed, with a frequency in hertz for the fixed case, on the carrier and on each modulator. The importer then translates the mode instead of refusing. - The index law interacts: under `kFrequency` the index is `d / fm`, and a fixed `fm` makes it constant across the keyboard, which is the DX7's behavior for that operator. - #65's keytrack exponent is the continuous version of this for a modulator: exponent 0 is a ratio, and a fixed frequency is the limit where the modulator's key follow is zero. ## Open - Whether the FM pair's oversampling derivation, which reads the modulators' ratios to bound the bandwidth, takes a fixed frequency in stride.
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#126
No description provided.