FM operator at a fixed frequency: the DX7 mode the importer refuses #126
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#126
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
bcox asked on 2026-10-05 for a ticket for each engine gap in his
moregaps.mdfeature table that no existing ticket covers. Engine claims are from reading the tree atf6aa8ebaonmain. 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
ratio = f_fixed / f_note, exponential in key.kFmRatiois a matrix destination (dsp/fm_pair_layer.h:1120-1128), andkExpScalegives 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.The work, as a sketch
kFrequencythe index isd / fm, and a fixedfmmakes it constant across the keyboard, which is the DX7's behavior for that operator.Open