greatest-ape / OctaSine

Frequency modulation synthesizer plugin (VST2, CLAP). Runs on macOS, Windows and Linux.
https://www.octasine.com/
GNU Affero General Public License v3.0
638 stars 18 forks source link

Velocity behavior is unexpected #173

Closed kzantow closed 1 year ago

kzantow commented 1 year ago

Describe the bug This isn't exactly a bug, but I think it's undesired behavior in many cases: velocity should not affect the MOD OUT amount, at least by default.

If there is a default velocity behavior, it should probably only affect the output level, with the ability to adjust per-operator how much it affects the MOD OUT amount.

What did you try to do Steps to reproduce the behavior: Make a patch like this (an attempt to use square waves for percussive noise): image

Enter some MIDI notes like this (note the differences in velocity): image

Expected behavior The output sounds the same, with different volume levels depending on the velocity.

Software (please complete the following information):

greatest-ape commented 1 year ago

Yes, I can see your point. Velocity currently affects operator feedback as well as operator volume, which in turn affects modulation output. I could probably add parameters for how much velocity affects:

This would mean adding a total of 13 new parameters though, so I would have to think of a good way to present them in the GUI.

kzantow commented 1 year ago

I agree you could many different options for this (and these could be expanded to many parameters like envelope attack time), however I'd suggest the most important velocity settings are:

1) final voice volume (the most important -- things could be quieter when playing at low velocities) 2) per-operator mod out (since this is more-or-less how to do filter-like stuff in FM)

I'm not sure if the others are as important as the two mentioned above, which would result in only 4 parameters and be more manageable in the GUI. A suggestion: you could get rid of the target for each operator, since it's duplicated by the matrix. I'll say, though, that I find myself using the target almost exclusively and not the matrix, so that might not be the best...

greatest-ape commented 1 year ago

Since the point of this change is to be able to just have final volume be affected, it has to be possible to set the effect on feedback to zero, meaning a parameter for that will be needed too.

Yeah, I added those because someone complained about only being able to set them from the matrix, haha.

A design goal has been to have all knobs/parameters visible on a single surface, but I might have to rethink this.

greatest-ape commented 1 year ago

@kzantow What do you think of this? Sensitivity parameters are currently only accessible though the parameter list and not yet through the GUI.

OctaSine-tmp-2023-05-01-Windows.zip

kzantow commented 1 year ago

@greatest-ape I had a play with this... I think the defaults should be 100% for the "Mix out sensitivity" and 0% for everything else, but overall this definitely helps. For example this patch (play F1) is close to a ride cymbal (obviously remove the .txt extension) octasine-quick-ride.fxp.txt

greatest-ape commented 1 year ago

Thanks for trying it out!

Yeah, those would be sensible defaults. The current defaults are required for backwards compatibility at the moment, but I might be able to rewrite some stuff to change that.

I was just going to upload a build exposing the parameters in the GUI. Please try it out if you want to: OctaSine-tmp-2023-05-02-Windows.zip

kzantow commented 1 year ago

I tried this but I don't see anything other than the VOL VS control, and without having the others default to 0, it still seems to have the unexpected behavior. Am I missing something?

greatest-ape commented 1 year ago

Ah, there are new buttons on the right side to toggle showing those controls, but they might be too easy to miss.

kzantow commented 1 year ago

Oh, I see. If I could offer a suggestion how to integrate these "extras" into the GUI: would it make sense to just have a single button, maybe near the top (or in the bottom right section(s)) maybe labeled something like "More", which toggles all the extra controls at once? And for these, I might put them in the panels with MOD OUT / FEEDBACK instead of the envelope, since they are more directly related to the behavior of those controls.

greatest-ape commented 1 year ago

Having a single button is a good idea and would save horizontal space. But I think users might want to have the new knobs and feedback/mod out visible at the same time to tune both?

greatest-ape commented 1 year ago

Build with single button to toggle change of controls for all operators: OctaSine-tmp-2023-05-04-Windows.zip

greatest-ape commented 1 year ago

Support has been merged: https://github.com/greatest-ape/OctaSine/pull/175