You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Both envelope increase and decrease are non-lineair.
Envelope increase is faster than envelope decrease.
Envelope decrease is exponential, envelope increase is quadratic.
XFM2 conversion
Algorithm
DX7
XFM2
134
1 - 6
The algorithms of the DX7 need to be converted to the bitmapped version for the XFM2.
Mark that the feedback bit (making a XFM2 operator modulates itself) needs to be included as well!
Algorithm 4 and 6 have feedback that is not self-modulated (from 4 to 6 and from 5 to 6): so probably operator 6 won't have a feedback bit set!
Feedback
DX7
XFM2
135
7 - 12
DX7 has only one feedback parameter, range 0-7
XFM2 has a feedback parameter per operator, range 0-255
The value from DX7 needs to be copied to the feedback parameter of the XFM2 for the operator that has feedback, according to the algorithm.
Not tested, but assuming a lineair conversion scale: 255/7
Not sure: is the feedback parameter used for algorithms 4 and 6, or do these algorithms use the operator output level from operator 4 (for algorithm 4) and operator 5 (for algorithm 6)? We assume the the latter: the XFM2 feedback parameter is only for self modulation!
Oscillator keyboard sync
DX7
XFM2
136
13
DX7 has global oscillator sync, range 0-1
XFM2 has bitwise oscillator sync, per operator, LSB = operator 1
When DX7 has oscillator sync enabled, set the XFM2 oscillator sync parameter to 0b00111111 (=63)
Operator mode
DX7
XFM2
17,38,59,80,101,122
14
DX7 has a parameter per operator. 0 = ratio, 1 = fixed pitch
XFM2 has a bitwise parameter. LSB = operator 1. 0 = ratio, 1 = fixed pitch
The conversion for the coarse & fine frequency parameters are different with respect to this parameter!
Fixed pitch parameter conversion
When using fixed pitch operator mode, the frequency is obtained on the DX7 using the following formula: COARSE * FINE:
COARSE is a value between 0-3, corresponding to 1Hz, 10Hz, 100Hz or 1000Hz (=HZ-COARSE);
FINE is a value between 0-99, corresponding with multipliers 1 to 9.772
The actual formula to get the frequency for the D7 is: Hz = HZ-COARSE * (1 + (FINE * 8.772 / 99))
When using fixed pitch operator mode, the frequency is obtained on the XFM2 using the following formula: COARSE * FINE:
COARSE is a value between 0-255, frequency is calculated using the formula Hz = COARSE * 32.7
FINE is a value between 0-255, using the same formula as with frequency fine ratio, so: 2^(FINE/256), for equal temperament.
The actual formula to get the frequency for the XFM2 is: Hz = COARSE * 32.7 * 2^(FINE/256)
An approximation for this formula is: Hz = COARSE * 32.7 * (1 + (FINE/256) * (FINE/256) * 0.34 + (FINE/256) * 0.66)
The multiplication range for the XFM2 FINE parameter can be calculated from this: it goes from 1 to 1.9946
Need to check: this would mean that a frequency below 32.7 is not possible using fixed pitch rate. Maybe COARSE = 0 is actually 16.35?
Conversion of coarse & fine parameters in fixed pitch mode needs to be combined: the resulting value for the XFM2 coarse parameter depends on both the coarse & fine parameters of the DX7, for reference see this table:
DX7 Coarse
DX7 Fine
Hz
XFM2 Coarse
XFM2 Fine
1
0
10 Hz
?
?
1
50
54 Hz
1
187
1
99
98 Hz
2
148
2
0
100 Hz
3
7
2
10
189 Hz
5
53
2
99
997 Hz
29
11
3
0
1000 Hz
30
7
3
10
1886 Hz
57
4
3
99
9772 Hz
298
1
The correct conversion is as follows:
XFM2-COARSE = Hz / 32.7, rounded down (not using fractions), Hz being the "correct" frequency as calculated for the DX7
Let HZ-FINE be the fine ratio in Hz needed get to the "correct" frequency: HZ-FINE = (Hz - XFM2-COARSE) / Hz
XFM2-FINE = 256 / Log2(1 + HZ-FINE)
NB: this conversion is ONLY correct for XMF2 Tuning parameter value 0 (= normal tuning = equal temperament)
Frequency coarse ratio
DX7
XFM2
18,39,60,81,102,123
15-20
Coarse frequency works the same for DX7 and XFM2
Range of the XFM2 runs all the way up to 255, DX7 only goes to 31: XFM2 can have higher coarse frequency rates.
A coarse frequency of 0 on the DX7 is usually depicted as ratio 0.50 (what it actually is: a sub-oscillator)
Frequency fine ratio
DX7
XFM2
19,40,61,82,103,124
21-26
Fine ratio on the DX7 is a percentage of the frequency. A4 (=440 Hz) with frequency ratio 1.10 (coarse = 1, fine = 10) results in a frequency of 484. The calculation is F = Fc * (1 + Rf/100), F being the resulting frequency, Fc the frequency with only the coarse part and Rf the fine ratio parameter value.
Fine ratio on the XFM2 is a percentage of an octave. Using equal temperament, this means that the calculation is actually F = Fc * 2^(Rf/256). So to get the correct ratio, the value is actually fine = 35.
The correct conversion would be: XFM2 fine = 256 / Log2(1 + Rf/100), Rf being the fine ratio parameter value of the DX7.
NB: this conversion is ONLY correct for XMF2 Tuning parameter value 0 (= normal tuning = equal temperament)
Detune
DX7
XFM2
20,41,62,83,104,125
27-32
DX7 detune is ranged 0-14, 0 corresponds to -7, 7 corresponds to 0, 14 corresponds to +7
XFM2 detune is ranged 0-255, 0 corresponeds to -127, 128 corresponds to 0, 127 corresponds to +127
DX7 detune segments an fine pitch interval of the DX7 (rang -0.007 to +0.007? Not sure..)
XFM2 detune is ranged in cents, so an interval within a semitone of an octave (see also frequency fine ratio)
The means: DX7 has detune with respect to frequency, XFM2 has detune with respect to semitones: same different as for frequency fine ratio. But because the intervals are so small, we will probably get away with a fixed conversion ratio.
Levels
DX7
XFM2
16,37,58,79,100,121
33 - 38
Levels on the DX7 range from 0-99
Levels on the XFM2 range from 0-255
Unsure whether the conversion should be linear or some other function. Assumption is linear, so LEVEL * 255/99
DX7 Levels with respect to modulation index (from Music: a mathematical offering, Apendix B, David Benson. The calculation in Synthesis: FM pt2 are the same, but have a higher accuracy, and this page describes the actual formula that is used:
Let:
DX7: the parameter value (range 0-99)
TL, the TL-number (?), TL = 99-DX7 for DX7>=20, and for lower values we have to use a look-up table (the output is non-lineair)
I: the modulation index, I = PI * 2^((33/16) - (TL/8))
Look-up table for TL:
DX7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TL
127
122
118
114
110
107
104
102
100
98
96
94
92
90
88
86
85
84
82
81
DX7
Index
Original
Difference
0
0.0002
0?
10
0.0032
0.003
6,79%
20
0.0140
0.013
7,50%
30
0.0332
0.031
7,22%
40
0.0791
0.079
0,07%
50
0.1880
0.188
0,01%
60
0.4472
0.446
0,27%
65
0.6897
0.690
0,05%
70
1.0636
1.068
0,41%
75
1.6403
1.639
0,08%
80
2.5298
2.512
0,71%
85
3.9014
3.894
0,19%
90
6.0168
6.029
0,20%
95
9.2792
9.263
0,17%
99
13.123
13.119
0,03%
(this excel sheet has all the individual numbers and the actual calculation).
The numbers differ a bit from the numbers in FM Theory & Applications, John Chowning, the third column named "Original". Especially the calculated index for 0 seems a bit odd, probably the result of using an exponential function with y asymptote = 0. The DX7 would not use a function to calculate these indices, but a lookup table, so param value 0 would probably be set to modulation index 0. But as you can see from the fourth column and the graph below, the differences are very small. From param value 40, the difference is always less than 1%.
Key velocity sensitivity
DX7
XMF2
15,36,57,78,99,120
39 - 44
KB level scale
Param
DX7
XFM2
Breakpoint
8,29,50,71,92,113
45 - 50
Left depth
9,30,51,72,93,114
51 - 56
Right depth
10,31,52,73,94,115
57 - 62
Left curve
11,32,53,74,95,116
63 - 68
Right curve
12,33,54,75,96,117
69 - 74
Operator level envelope
Param
DX7
XFM2
L1
4,25,46,67,88,109
75 - 80
L2
5,26,47,68,89
82 - 87
L3
6,27,48,69,90
89 - 94
L4
7,28,49,70,91,112
96 - 101
R1
0,21,42,63,84,105
103 - 108
R2
1,22,43,64,85,106
110 - 115
R3
2,23,44,65,86,107
117 - 122
R4
3,24,45,66,87,108
124 - 129
The DX7 envelope doesn't start at 0, but at the level of L4, which most of the time will be 0.
The XFM2 envelope starts at level L0. So to convert the levels correctly: L4 of the DX7 should also be used to calculate L0 of the XFM2:
Param
DX7
XFM2
L0
7,28,49,70,91,112
181 - 186
Pitch envelope
Param
DX7
XFM2
L1
130
130
L2
131
131
L3
132
132
L4
133
133
R1
126
134
R2
127
135
R3
128
136
R4
129
137
The DX7 envelope doesn't start at 0, but at the level of L4, which most of the time will be 0.
The XFM2 envelope starts at level L0. So to convert the levels correctly: L4 of the DX7 should also be used to calculate L0 of the XFM2:
Param
DX7
XFM2
L0
133
205
Pitch envelope range
DX7
XFM2
-
138
The pitch envelope range defines the range of the pitch envelope on the XFM2, in octaves.
The DX7 doesn't have this parameter. The pitch envelope range is fixed to -4 to +4 octaves (0 = -4, 50 = 0, 99 = -4)
Pitch envelope range velocity
DX7
XFM2
-
139
The pitch envelope range velocity sets how much the pitch envelope range changes with MIDI velocity on the XFM2.
The DX7 doesn't have this parameter. The pitch envelope range is fixed to -4 to +4 octaves.
Leave this parameter to 0: pitch envelope range velocity is not available on the DX7.
Operator level envelope rate key
DX7
XFM2
13,34,55,76,97,118
140 - 145
This parameter will make higher notes have a faster envelope than lower, bass, notes. It works rougly the same on the DX7 and XFM2.
The operator level envelope rate key on the XFM2 works the same as other rates: 0 gives the normal, slowest envelope, 255 gives a very snappy, fast envelope (at high notes).
The DX7 works the same way, but with a different scale: 0 gives the normal, slowest envelope, 7 gives the fasted envelope (at high notes).
Pitch envelope rate key
DX7
XFM2
-
146
The pitch envelope rate key on the XFM2 works the same way as the operator level envelope rate key: changing the timing
THe DX7 doesn't have this parameter. The pitch envelope timing is fixed.
LFO Pitch depth
DX7
XFM2
139
149
LFO Amp depth
DX7
XFM2
140
150
LFO Speed
DX7
XFM2
137
151
The LFO speed of the DX7 might go from 0.1 Hz to 60 Hz, but other values are 3.5 Hz to 47 Hz. It seems quite linear at the bottom, but high values seems to increase the speed more than low values.
The LFO speed of the XFM2 seems pretty linear, a multiplication of 2.76 BPM per parameter value (276 BPM for value 100, 28 BPM for value 10), but higher values also seems to increase the speed?
The LFO's of the DX7 and XFM2 do not have the same speed range apparently, so some conversion seems to be necessary?
LFO Sync
DX7
XFM2
141
152
LFO Wave
DX7
XFM2
142
153
The DX7 and the XFM2 have the same possible wave forms for the LFO, if you would consider the S/H (Sample & Hold) waveform the same as the random waveform of the XFM2, using the following conversion table:
Waveform
DX7
XFM2
Triangle
0
0
Saw down
1
3
Saw up
2
2
Square
3
1
Sinus
4
4
S/H, Random
5
5
LFO Fade/Delay
DX7
XFM2
138
154
This parameter is called "Fade" on the XFM2 and "Delay" on the DX7. Not sure if it is the same thing.
From the XFM2 manual, "Fade" is the time to ramp up to the specified LFO effect.
From the DX7 manaul, "Delay" is simply that: a delay of the LFO effect.
This assumes that the functionality is somewhat different: a ramp-up effect vs a delayed effect
LFO Amp sensitivity
DX7
XFM2
14,35,56,77,98,119
159 - 164
Transpose
DX7
XFM2
144
174
Transpose 24 = no transpose, so 24 corresponds with C4.
Midi note implementation:
C4 = MIDI 60 = 261.63 Hz
A4 = MIDI 69 = 440.00 Hz
(LFO) Pitch sensitivity
DX7
XFM2
143
222 - 227
The DX7 pitch sensitivity parameter sets the same value for every operator.
The XFM2 has a pitch sensitivity parameter per operator.
Conversion reference
The table below gives a reference guide for all 154 parameters of the DX7