While listening through some sysex-banks in Dexed I noticed that it's possible that out of range-values in sysex could f.ex. create distorted sounds and I wondered why I would find EG level-values of 127 when the maximum allowed is 99. I found that some parameters were not being checked/normalized and some that were (operator eg level etc), were being overwritten with the raw values afterwards ( https://github.com/asb2m10/dexed/blob/02661e7551dcf4682c4b58124a524bcb57a562ba/Source/PluginData.cpp#L131 ).
I've been working on a fix for a pull request ( https://github.com/encore64/dexed/commits/NormalizeCorruptedSysex ) but I realized something - I don't know how the original Yamaha DX7 behaves in these cases as I don't own one anymore. Therefore I've made a test sysex-file. I would be thankful if anyone could try it on their DX7 and report back what the DX7 reports on these values.
1 INIT VOICE (valid "voice", has the maximum setting of these parameters):
op1 eg rate / op1 eg level, p eg level / p eg rate = 99
op1 detune = 14
lfo wave = 5
transpose = 48
2 INIT +1 (invalid "voice", increments 1 extra to these parameters
op1 eg rate / op1 eg level, p eg level / p eg rate = 100
op1 detune = 15
lfo wave = 6
transpose = 49
3 INIT MAX (invalid "voice", adds the maximum value to these parameters
op1 eg rate / op1 eg level, p eg level / p eg rate = 127
op1 detune = 15
lfo wave = 7
transpose = 127
In Dexed these values will be shown when hovering over the parameters. I hope that the DX7 will show what it interprets these values as. Thanks in advance!
Update: Looks like I will be able to get test results from a Yamaha TX7 (which I assume works the same with regards to this) so I can probably figure this out myself. :)
Hiya! Big fan of your project :)
While listening through some sysex-banks in Dexed I noticed that it's possible that out of range-values in sysex could f.ex. create distorted sounds and I wondered why I would find EG level-values of 127 when the maximum allowed is 99. I found that some parameters were not being checked/normalized and some that were (operator eg level etc), were being overwritten with the raw values afterwards ( https://github.com/asb2m10/dexed/blob/02661e7551dcf4682c4b58124a524bcb57a562ba/Source/PluginData.cpp#L131 ).
I've been working on a fix for a pull request ( https://github.com/encore64/dexed/commits/NormalizeCorruptedSysex ) but I realized something - I don't know how the original Yamaha DX7 behaves in these cases as I don't own one anymore. Therefore I've made a test sysex-file. I would be thankful if anyone could try it on their DX7 and report back what the DX7 reports on these values.
TestingLimits.zip
The first 3 voices are the testcase.
1 INIT VOICE (valid "voice", has the maximum setting of these parameters): op1 eg rate / op1 eg level, p eg level / p eg rate = 99 op1 detune = 14 lfo wave = 5 transpose = 48
2 INIT +1 (invalid "voice", increments 1 extra to these parameters op1 eg rate / op1 eg level, p eg level / p eg rate = 100 op1 detune = 15 lfo wave = 6 transpose = 49
3 INIT MAX (invalid "voice", adds the maximum value to these parameters op1 eg rate / op1 eg level, p eg level / p eg rate = 127 op1 detune = 15 lfo wave = 7 transpose = 127
In Dexed these values will be shown when hovering over the parameters. I hope that the DX7 will show what it interprets these values as. Thanks in advance!