Round Robin + Group XFade
-
With the current system you can have either RR groups or you can have XFade groups. But what if you want both...
Current solutions:
Use velocity to separate RRs (I'm currently using this) - downside is you lose the basic velocity functionality for triggering samples.
Use multiple samplers - eats CPU.
Use multiple xfade groups and script the RR - currently limited to 8 xfadesThe last one I think is the most flexible. Lets say you have 2 dynamic layers you want to XFade and 3 RRs. You can map your dynamics in groups 1/2, 3/4, 5/6 set up group XFades for these groups and write a simple RR script to trigger the groups. I haven't tested this but I assume it will work. The main limitation to this is that currently we can only have up to 8 xfade groups - @Christoph-Hart any chance of bumping this number up? I have 4 RRs and 3 Dynamics so that needs 12 groups.
-
Another possibility would be to use a note offset for the RR group. This works of course only for sample sets which don't span the entire keyboard (but for normal orchestral instruments with their limited range you should be fine).
Let's say you have 2 dynamic layers and 3x RR with a sample set that goes from C2 to B4 (3 octaves = 36 notes). Then you can map the RR1 group to the notes C-1 to B1, RR2 to C2 to B4 and RR3 from C5 to B7 and implement the RR logic like this:
reg octaveShift = 0; function onNoteOn() { local thisShift = (octaveShift-1) * 36; Message.setTransposeAmount(thisShift); octaveShift = (octaveShift + 1) % 3; }
With 3 RR groups you have 127 / 3 = 42 note slots available using this trick.
-
@christoph-hart I will use this technique! Very good suggestion :) thanks
-
@d-healey I know this is quite an old post, but we're running into a similar situation now and I'm wondering if there's a cleaner solution. We currently use the xfade groups for dynamics, but we may also have round robins + velocity layers in our next expansion pack and our samples span the entire keyboard length, so we can't use Christoph's note offset RR solution.
Use multiple xfade groups and script the RR - currently limited to 8 xfades
It seems like this option might still be the best bet?
-
@Casey-Kolb Do your samples also spread over the velocity range?
-
@d-healey Yes.
-
@Casey-Kolb I should have worded that differently. Are you using multiple samples at different velocities on the same key, or is it the same sample covering the entire velocity range?
-
@d-healey ah yes, I see. We will have multiple velocity layers (ie a sample for velocity 0-27, 28-56, 57-80, and so on)
-
@Casey-Kolb If you're not using velocity crossfades you could compress the range of velocities you are using to map those samples and use scripting to remap the incoming velocity to the correct one. That would free up the rest of the velocity range for repetition samples.
-
@d-healey That's an interesting idea. Do you think that's cleaner than switching dynamic groups (1/2, 3/4, 5/6, etc) with scripting?
-
@Casey-Kolb there is an inbuilt solution for this now:
https://docs.hise.audio/scripting/scripting-api/sampler/index.html#setmultigroupindex
-
@Christoph-Hart Killer! Thank you.