On 04.04.2023 23:05, Will Godfrey wrote:
This is a topic that's been mentioned before.
We do have this in place, but with hindsight I think I went about it the wrong
way.
My suggestion for an alternative would be a static header file with mini
functions that would take three parameters by reference and return them as min,
max, default. These would have to be floats to handle all types. At the same
time they could return a char with the bits set to denote whether this is to be
regarded as an integer and whether it is MIDI learnable. If I understand this
right the calling function could also send NULL for entries it wasn't
interested in.
Like this it would be readable everywhere without significant overhead.
e.g.
// some function
float default;
char flags = limits::partvolume(NULL, NULL, default);
// other stuff
// another function
float min, max;
limits::voicedetune(min, max, NULL);
// other stuff
Does this seem workable?
Could it be done better?
I'm afraid I don't recall the original discussion, so it's possible I'm
completely off the mark here, but won't it suffice to simply have a
struct of values? Then you can access them directly where you need them,
instead of first having to declare a variable, then assign to it, then
use it.
So like this:
```
static-header-file.h:
struct MixMaxDefault {
float min;
float max;
float default;
};
struct Limits {
MinMaxDefault partvolume {0, 127, 64};
MinMaxDefault voicedetune {-64, 64, 0};
};
--------------
ui-file.fl
function() {
SetVolume(Limits.partvolume.default);
}
```
MinMaxDefault could also be a template if you need more types than just
floats.
--
Kristian
_______________________________________________
Yoshimi-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel