In implementation, thinking through the details of how your users will want to use a feature can make a huge difference.
Today’s details will be of interest to nobody but musicians who use Propellerhead Reason. One of Propellerhead’s optional add-on synths is PX7, a 98% faithful recreation of the hallowed and groundbreaking Yamaha DX7 (which first appeared in 1983). Six-operator FM synthesis — a distinctive and versatile sound.
Yamaha later went on to release several other FM synths, including the lower-cost rackmount TX81Z, which was very popular. This week, a small company called Primal Audio has released the FM4. Like PX7, it’s a Rack Extension for Reason. And it’s a (slightly less faithful, but still good) recreation of the TX81Z, which had one or two distinctive features of its own, notably a choice of eight basic waveforms, as opposed to the DX7’s straight sine waves.
FM4 has CV input jacks on its rear panel for control of the pitch and amplitude of each of the four oscillators. PX7 only has inputs for amplitude of its six oscillators. Ah, but if you put PX7 in a Combinator, you gain access to all of its parameters, including oscillator pitch, via the Combinator’s programmer page. Right? Well, sort of. Actually, “wrong” would be a better description.
Like the DX7, PX7 gives you coarse and fine tune parameters for each oscillator. These are in the form of numbers. Fine tune can be set from .00 up through .99. This is perfectly sensible if you’re programming a sound and can set the tuning ahead of time, before you start playing. If you need a pitch that’s slightly flat, you just dial the coarse tune down to the next lower value and then crank the fine tune up to .98 or .99.
But if you want to apply real-time modulation — from an external LFO, let’s say — to the fine-tune parameter, this implementation is quickly revealed as a disastrous mistake. The LFO, which is being routed through the Combinator, can only move the pitch of the oscillator up, because .00, which is the “in-tune” pitch setting, is not in the middle of the parameter’s travel; it’s at the bottom. The LFO can’t impose a bi-directional pitch wobble, which is what you would typically want — it can only drive the fine-tune upward from .00.
In fact, the problem is worse than that. When modulation is applied to PX7’s fine-tune, it is assumed by the PX7 to be bidirectional from the midpoint of the parameter’s travel. The fine-tune will instantly reset itself to .50 (the midpoint — or to .75 if the coarse pitch is 0.5) so that it can go up or down from there. This completely fucks up the patch.
The FM4 gets pitch modulation right. Guess I’ll have to keep it in my rack after all.