On Tue, 14 May 2024 20:21:08 +0200 Kristian Amlie <krist...@amlie.name> wrote:
>On 14.05.2024 01:06, ichthyo wrote: >> On 12.05.24 15:22, Kristian Amlie wrote: >>> have indeed run into the exact problem that Hermann describes above, >>> with an instrument sounding good only in one or two octaves >> ... >> >> Hi Kristian, >> >> thanks for chiming in; the problems with the possible workarounds you >> describe and the avenues to address those match closely my own experience >> and considerations. This is a limitation I have on my mind since quite some >> time, yet it does not seem to be easy just to "fix" and requires some >> planning. >> >> Some time ago, I did a complete rework of the legato / note-ON code to fix >> some deeply rooted problems; at that time it became clear to me that in >> theory the "crossfade" feature might as well work based on volume >> without incurring any serious performance degradation; the only problem >> with this change would be that the data value must be transported to >> that code handling the cross fade, and from there on further to the >> code calculating the actual volume per part. > >Yes, I also discovered this while looking at the Kit Edit crossfade, >which is why I couldn't fix it right away. Still, I don't think it's a >huge fix, and although you're right that we need new fields to carry the >volume, it is entirely at surface level, in the Parts section. We don't >need to carry it into each engine. > >> Some days ago, Will and I had a discussion off-list, which touched the >> possibility to have further parameters per note, which would have been >> a rather internal thing with the current MIDI standard, yet could turn >> into a much more far reaching possibility with new upcoming standards. >> >> Obviously, none of us can clearly spell out such a feature right now; >> at the moment this discussion might rather help to find out what would >> be possible and what could be achieved with reasonable effort, without >> endangering the overall structure of the code base. For me this was >> also the reason to bring up this related problem with per-note >> adjustments. If we consider to transport one or two further data >> values with a note event (even just internally), several further >> new things seem possible. > >Right. I too have some difficulty formulating exactly what such a >feature would be. But one thing that comes to mind is striking a note >"at different angles", a concept which obviously doesn't exist on >keyboards. But it's not inconceivable that there could be an instrument >with this capability, especially if MIDI 2.0 allows it. > >Probably best to have a clear idea on what we want to achieve first though. > >> For the problem of "balancing the presence" of an instrument, >> it would probably be sufficient to have a global adjustment for >> the volume; implementing this would be trivial, the challenge >> seems rather to be the UI and how to control such a parameter. > >For this specific use case, does the Kit Edit with crossfade between >ranges solve the problem? It does for me at least. As long as we're >talking about octaves. > >> If, on the other hand, we'd go to the trouble of implementing >> a new pop-up window with an curve adjustment, similar to EQ >> or envelope or the like (which is quite some work to be sure), >> then we'd end up with a LUT (look-up-table) to be used in >> the actual note-on code. If we actually go that far, then of >> course the question is, why stop there? Then we could also >> have a reworked crossfade feature, or consider adding an >> adjustment to some filter parameters, based on a per-note >> multitouch or whatever. > >Hehe, yes, there is no limit to that. I have to admit that I have not >even tried to use the aftertouch feature, even though I have a device >which supports it! It's just too much to control for a mediocre player >like me! 😄 That doesn't mean it's not worthwhile for someone else though. > Just got back from a mini-holiday in Derbyshire :) Looking first at Crossfade, I don't see any particular difficulty with implementing Volume instead of Velocity. The code would be a variation of what we already have, and as Kristian mentioned, it's at part level and doesn't touch the engines. In the UI we currently have a menu with: . Off . Multi . Single . Crossfade So we could add . Volumefade I've fiddled menu entries before to preserve sensible backward compatibility, so we just need to decide what behaviour we want for this. Getting more refined control as curves instead would be very nice, but would be quite a lot of work. For the GUI, I'd suggest a layout similar to to the engine harmonics, with one slider per note, so you can effectively see a curve. This is of course note based rather than individual key press. A look at the Microtonal note modification might give some ideas. Moving on from this we've also touched on other possibilities, and Aftertouch has been mentioned. I know that this works correctly for Channel A/T, but no doubt it could be improved. It currently works between either the current set value, and Max, or downwards from the current setting to Zero. That seemed to make the most sense to me. I've faked a key aftertouch test and it 'seems' to be correct, but I don't have a suitable keyboard to to check it properly. I didn't include LFO depth as that's such a can of worms :( It's still classed as experimental :P -- Will J Godfrey {apparently now an 'elderly'} _______________________________________________ Yoshimi-devel mailing list Yoshimi-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/yoshimi-devel