Sean Bolton, who wrote hexter, sent the converter he built in 1986 and 56 real FB-01 banks.
Both changed this release.
FB-01 banks are converted his way now
He wrote that conversion by ear, sitting between an FB-01 and a TX7, and put it in the public
domain. It is what produced the fb01_roms_converted_*.dx7 banks hexter has shipped for years.
hexter had been deriving those values from the format instead, which was a correct reading of
the bytes and a wrong sound.
Running both converters over 2688 voices from 56 real banks showed where:
- The LFO ran about three times too fast. Its speed is a whole byte, 0 to 255, and hexter
was reading seven bits of it and stretching that to the DX7's full range. Mean speed across
the collection was 90 of 99 where it should be 30. - Pitch modulation was halved, for a reason that was a guess.
- The LFO key sync bit was inverted.
- Envelope rates were linear where the hardware's are curves, output level was rescaled from a
range of 127 rather than subtracted from 99, and sustain fell to silence where it should stop
at 35. - FB-01 algorithm 2 puts its operators in a different order than hexter had, and algorithm 8
maps to DX7 29 rather than 31.
The DX21 family keeps its own algorithm table, because no hardware has been put in front of
that one and changing four other synths on evidence from a fifth would be a guess.
Three things hexter keeps doing differently
Each checked over the same 2688 voices. hexter honours the operator enable bits, so an operator
the FB-01 switched off stays silent: 920 of those voices, 34%, have one. It also carries the
keyboard level scaling depth and the amplitude modulation sensitivity.
Tests: 236 checks become 445
Three new suites, pinning the conversions value by value rather than sampling one voice: the
FB-01 conversion, the DX21 family's, and the operator waveforms. Every envelope table is walked
entry by entry, every algorithm has its routing checked and its spare operators checked silent.
Both converters get 4000 random voices each, with every output byte checked against what a
DX7 voice allows. Every check was confirmed by breaking the behaviour it names and watching it
fail.
Corrected
2.7.3 claimed the FB-01's user bank is the form you are most likely to be sent. The manual lists
both dumps as things the instrument sends, which is what that rested on, but Sean remembers the
short form as one it would receive and never transmit, and all 56 of his banks are the long one.
Reading both is still right. The reasoning was not.
DX7 output is unchanged.