openAVproductions / openAV-Fabla2

The repository of the Fabla2 sampler by OpenAV. http://openavproductions.com/fabla2
GNU General Public License v2.0
54 stars 13 forks source link

Add option for direct velocity -> volume conversion #45

Closed caryoscelus closed 8 years ago

caryoscelus commented 8 years ago

It looks like right now note velocity is only used to determine which sample to play. It would be nice to have alternative of velocity directly changing volume or, even better, option to combine both methods.

harryhaaren commented 8 years ago

Yes you're right - an option to add a velocity to volume mapping makes sense, but velocity to both volume and which sample makes no sense to me. The samples will be organized by "intensity" by the user, and if we modify the volume, it will only cause thier work to be un-done?

caryoscelus commented 8 years ago

The idea is to have several samples and interpolate in-between volumes to have smooth volume curve. This can be tricky to tune properly, depending on sample volumes. Alternative solution could be to mix two nearest layers in different proportions depending on velocity. Also would be nice to be able to fine-tune these stuff (e.g. choose which layer activates at which velocity).

harryhaaren commented 8 years ago

Ah, sorry I misunderstood your first "fade volume" idea then - you mean to trigger two voices, both with different volume settings based on the velocity? That could be interesting yes, although with > 3 velocity layers, I don't the effect on the overall will be huge.

Re: choosing specific samples for specific velocity ranges, this can already be achieved now, using the UI "Velocity Map" dials :)

caryoscelus commented 8 years ago

Hmm, there are so much possible various flavours of interpolation, actually.

  1. My initial idea: for each velocity range, use one sample and change its volume (needs a lot of tuning so that sample-changing points would be seamless).
  2. Each sample has a single velocity point at which it is played at 100% volume. For every other velocity, left and right sample are mixed with volumes according to their proximity.
  3. Each layer has a velocity-to-volume map (preferably using curves, but could be simplified using dials) and all layers with non-zero volume are mixed. This allows for maximum flexibility, including simulation of first two options (though requires more tuning than option 2 if such behaviour is desired).

Note that i may not quite understand how current layering is supposed to work as it doesn't seem to work at all for me (just discovered this).

harryhaaren commented 8 years ago

The "Switch Mode" dial has to be set to 2 or 3, for round robin or velocity map functionality. I know this stuff needs proper tutorials / documentation when it is released.

caryoscelus commented 8 years ago

Ah, i see. Thx for explaining.

Anyway, i might look into implementing some of this, at least that one-sample mode.

harryhaaren commented 8 years ago

Sure, one-sample mode is important. I think there are other items probably more interesting to work on instead of the "interpolate between multiple samples"... per Voice FX come to mind! Filtering, distortion, etc can all be done per voice (not per sample, but dynamic during the voice lifetime) that makes for awesome flexibility. If you want juicy ideas :)

caryoscelus commented 8 years ago

Well, for now i'm mostly interested in implementing stuff i would immediately use :)

harryhaaren commented 8 years ago

Closing since pull-request #49 has been merged.