surge-synthesizer / surge

Synthesizer plug-in (previously released as Vember Audio Surge)
https://surge-synthesizer.github.io/
GNU General Public License v3.0
3.13k stars 400 forks source link

Typein and Modulator Bugs #2229

Closed baconpaul closed 4 years ago

baconpaul commented 4 years ago

Leaving this one open while I think about that spacing issue, and to see if other bugs come in.

Typein and Modulator Bugs

ghost commented 4 years ago

Surge-NIGHTLY-2020-06-28-0afefa8 | Win-10, VST3i

Sine Osc Typein Issues Assign Velocity or Keytrack, to Low or High Cut filters and move blue handle to right. RC and typein 500 Hz. Check result, which shows 513.750 Hz (and apparent rounding error).

image

Modulation Of Mixer Levels Typein Issue Pull down Mixer Channel 1 to -inf dB. Assign a Velocity, ENV, LFO, or SLFO modulation-source to positively modulate the Mixer Channel in from -INF to 0 dB. As one moves the Mixer channel slider up, the leftmost value shows -INF, and the rightmost 0 dB. RC on the blue handle and try to type in a new value for the rightmost value shown when setting the modulation initial range, and one will see that it is actually the leftmost value that is displayed for editing, rather than the right. Try a type in value of -24 dB, and one will observe that the blue handle of the Mixer channel, rather than being set to -24 dB, is rather set to -INF. In this scenario, it appears that the typein values are inverted, and is not possible to typein a value less than 0 dB without setting the control to -INF.

LICEcap

Surge-NIGHTLY-2020-06-27-4ec1fc6 | Windows-10, VST3i | Typein Issues Filter Modulation Typein Issues RC on a Filter handle, type in 500 Hz for the cutoff frequency. Assign Velocity to positively modulate the cutoff frequency with a range of 500 Hz, to 5000 Hz. RC on the blue handle, and typein 5000, then RC again to check the value... Rather than the expected 5000 Hz, 5500 Hz is displayed instead. This rounding error (?) seems to manifest with all of the other modulation-sources as well.

LICEcap

Send FX and Return FX Modulation Typein Issues RC on any Send or Return FX slider, and typein -12 dB to set the initial center value of the control. Assign a S-LFO to the control for bipolar modulation. Move the blue modulation range handle to the right where the readout shows approximately -6 dB for the rightmost value, then RC and typein -6 dB, and observe that the blue handle swaps sides of the control center. RC on the blue modulation range control, and notice that the displayed values show -7.12 ... -18 dB.

LICEcap

baconpaul commented 4 years ago

Just for posterity: Those reports are all examples of the synth doing what I intended it to. So they weren't coding bugs. They were design-time UX bugs. New push coming soon which shows the data rather differently.

VincyZed commented 4 years ago

image

baconpaul commented 4 years ago

That gets fixed by adding a modulationCap to displayInfo for the freqs. Will push with others at end of day if other bugs come in.

baconpaul commented 4 years ago

Oh I accidentally pushed the fix to that with #2238

ghost commented 4 years ago

Surge-NIGHTLY-2020-06-29-9c42bd3 | Win-10, VST3i

FM3 Oscillator doesn't accept typeins for M1 or M2 Ratios

LICEcap

baconpaul commented 4 years ago

Oh thank you! That's a real bug indeed.

ghost commented 4 years ago

UPDATE: Fixed in Surge-NIGHTLY-2020-06-29-b1c054b

Surge-NIGHTLY-2020-06-29-9c42bd3 | Win-10, VST3i

modulationCap issue for all oscillators with High Cut filters

Overlapping values and label when mapping Velocity modulation to High Cut filters, and ambiguous results with typeins of cutoff frequencies.

LICEcap

baconpaul commented 4 years ago

@Jacky-Ligon after a long conversation on slack, we/ve made some more changes simplifying the UI in the base case. Just GYI. There's a new nightly. Things are moving quickly. Apologies. This is hard!

ghost commented 4 years ago

Confirming that the above is fixed in Surge-NIGHTLY-2020-06-29-b1c054b

ghost commented 4 years ago

Surge-NIGHTLY-2020-06-29-b1c054b | Win-10, VST3i

Modulated FEG and AEG release times can be set up to 8,191 seconds.

LICEcap

ghost commented 4 years ago

Surge-NIGHTLY-2020-06-29-b1c054b | Win-10, VST3i

Unexpected results when modulating FX Sends and Returns with S-LFO

There appears to be no correlation between slider-values, typein values, and values displayed in context menu after typeins, although the Returns make a little more sense than the Sends.

LICEcap

mkruselj commented 4 years ago

Modulated FEG and AEG release times can be set up to 8,191 seconds.

Not a bug. They can really go on for that long.

There appears to be no correlation between slider-values, typein values, and values displayed in context menu after typeins, although the Returns make a little more sense than the Sends.

Another issue here is that these don't show the information in the same way that other parameters do - there is no 3rd line with deltas when "Modulation popups show bounds" option is enabled. But also yes I see the discrepancy between the delta shown in the menu/popup and the value in typein.

mkruselj commented 4 years ago

image

Could probably give more space to the base value in the middle.

baconpaul commented 4 years ago

Thank you all.

K0rrid0r commented 4 years ago

116 "+-" is shown on negative values in the oscillator window.

126 "+-" shown on pitch slider

117 differences in display in the mixer, should be shown as Gain info is.

118 Phase / Shuffle Amplitude Deform shows "+-"

119 S shows "+-" R overlaps the numbers. lower the number of decimals?

120 Filter Keytracking displays "+-" Waveshaper displays "+-"

121 Polymode displays "+-"

122 Resonance in both filters displays "+-" F1 F2 slider displays "+-"

123 F1 F2 slider displays "+-" Amp EG S displays "+-" Gain displays "+-"

124 FM Depth displays "+-" Feedback displays "+-" Width displays "+-" Pan displays "+-" Send 1 displays other kind of window that should be the same as the other ones. Send 2 displays other kind of window that should be the same as the other ones.

125 Master volume displays "+-" Send 1 displays other kind of window that should be the same as the other ones. Send 2 displays other kind of window that should be the same as the other ones.

127 SINE +- on negative values on: Pitch Feedback Unison Detune High Cut displays differently then Low cut and with much higher values then anything else.

128 WINDOW +- on negative values on: Pitch Morph Formant Unison Detune High Cut displays differently then Low cut and with much higher values then anything else.

129 WAVETABLE +- on negative values on all sliders

130 FM2 +- on negative values on all sliders

131 FM3 +- on negative values on: Pitch M1 Amount M2 Amount M3 Amount Feedback M1 Ratio displays a different window then the rest of the sliders M2 Ratio displays a different window then the rest of the sliders

132 S&H Oscillator +- on negative values on: Pitch Correlation Width Sync Unison Detune High Cut displays differently then Low cut and with much higher values then anything else.

133 Audio Input Scene A +- on negative values on: Pitch Audio In Channel Audio In Gain High Cut displays differently then Low cut and with much higher values then anything else.

134 Audio Input Scene B +- on negative values on all sliders High Cut displays differently then Low cut and with much higher values then anything else.

baconpaul commented 4 years ago

This is amazingly useful feedback @K0rrid0r and @Jacky-Ligon both - thank you very much

baconpaul commented 4 years ago

I have consolidated this feedback at the top of the issue and will work from that list. Thank you.

baconpaul commented 4 years ago

@K0rrid0r in my test, hi cut and low cut show the exact same. all the frequencies have a cap though. What's the bug exactly?

K0rrid0r commented 4 years ago

Look at the difference on display, is that really correct?

136

mkruselj commented 4 years ago

Yes, that is indeed correct.

K0rrid0r commented 4 years ago

I see it now. i guess too much info about everything at this moment.

baconpaul commented 4 years ago

well also some pretty poor spacing makes it hard to read.

K0rrid0r commented 4 years ago

These are regarding the normal display mode and not the ""Modulation popups shows bounds" mode.

145 The two F1 F2 filter sections displays different values where as the ones in waveshaper are correct with +/- 200 F1 and F2 in Filter EG displays +/- 192

146 Mixer section is not displaying negative modulation values meanwhile the modulation actually is going there. Only Gain works properly.

147 Filter EG only S shows negative modulation properly

148 Amp EG only S shows negative modulation properly

baconpaul commented 4 years ago

So @K0rrid0r each of these are on purpose. It doesn't mean they are right but I'm not quite sure they are bugs. Let me explain

  1. We cap all gains at -192db. The mixer gain has a range which goes down that low so if you modulate below -192db you end up getting no extra modulation. Since the overarching gain has a range of +/-48db you can fully modulate down by -96 and not hit the -192; that's why it shows

  2. The reason A, D, and R have their lower bound at zero is they are times. You can't have a negative time attack. So it's the same thing - we are running into a bound and showing it properly.

  3. The KeyTrack one is more irritating. The display is correct but the keytrack F1/F2 is in units of percent, and the Filter F1/F2 is in units of semitones. The reason for this (in the code) is because the keytrack is multiplied by key number to get the offset (which is in pitches), but the envelope is not. So this is "right but confusing as all heck". However the display does show semitones for the F1/F2 in env and percent for the F1/F2 in keytrack, so the UI correctly shows this. It is very strange though that the two items labeled the same mean different things (in one case, how much to scale the keytrack to apply to the cutoff, and in the second case, how many pitches to multiply the envelope by to apply to the cutoff).

So I'm not quite sure what to fix. I think the first is the only one where we could do anything (the thing to do would be to not cap the mod distances) and I'm happy to do that, but I think the second two are correct.

Thoughts?

K0rrid0r commented 4 years ago

thanks for clarification. lets see what others may think, i was just used to see negative modulations that's all :)

ghost commented 4 years ago

Surge-NIGHTLY-2020-07-01-c84b66a | Win-10, VST3i

Sends and Returns FX Modulation Typeins scale tracks and handles differently with the same input values

LICEcap

baconpaul commented 4 years ago

Oh @mkruselj didn't you find some place where that control was manually adjusting ranges in Parameter space? That ugly thing we found that makes the send have a different max than the return?

baconpaul commented 4 years ago

Anyway @Jacky-Ligon the reason for this is (on purpose) the send and return have different maxes so they will scale differently.

Why exactly that was done on purpose, and the gross way it was implemented, is an interesting question. But this isn't a bug, it's a feature. Which we may want to fix! But the rendering is I think correct.

mkruselj commented 4 years ago

Oh @mkruselj didn't you find some place where that control was manually adjusting ranges in Parameter space? That ugly thing we found that makes the send have a different max than the return?

Yes I did, now it has its own ctype (ct_sendlevel), previously sends just used ct_amplitude and had a hacky multiplication in SurgePatch. Returns always used ct_amplitude straight up, IIRC.

mkruselj commented 4 years ago

Also, I think it's good that modulation amounts are capped. If your osc volume is already at -inf (which means complete silence), modulating that with a negative value is... more negative infinity? Makes no sense. So showing 0 dB is good here. Ditto for envelope times not going below 0.000 s. I don't think it should change.

baconpaul commented 4 years ago

Yeah on @Jacky-Ligon thing I did a double check to make sure we had handled all the max/min differently. We had and the sliders are consistent with their ranges, even though their ranges are different.

So my instinct is: We have this correct. There's some parameters which are weird in surge (the differences in keytrack meaning; the differences in range) but the UI and type-ins correctly represent those strangenesses.

I'm going to close this ticket as resolved the. We can easily reopen it in the beta period if we find something.

And most importantly: @Jacky-Ligon and @K0rrid0r thank you so much for your work with @mkruselj and me on designing and testing this feature. This was a tricky one and I'm super happy with where we landed.