How to play a specified RR group based on the distance between two notes?
-
How to play a specified RR group based on the distance between two notes?
When the tail of the first note overlaps the beginning of the second note,Trigger the specified Sampler,
and,ex.C to #C , play RR1; CtoD,play RR2; C to #D ,play RR3……
-
You can use the
Synth.isLegatoInterval()
function in the on note on callback to check if two notes are overlapping. If you want to differentiate between legato and chords though you will need to script a more sophisticated system, using the time between notes. -
@d-healey I want to use it to make legato, without distinguishing chords, but I'm a novice and this is very tricky for me. I don't know how to write the code. Can you give me a code snippet? Please help me, I'll be very grateful
-
@CatABC You can get pretty far with a minimal amount of scripting (at least for the basic functionality of legato intervals).
Basically what I would do is set the amount of RR groups to 127, then put the legato interval samples to the note number of the target note and in the RR Group of the start note. Example: If you have a legato transition sample from C2 to D2, you'll map it to the note number D2 and the RRGroup 48 (C2 = 48). Proceed with every legato sample like that.
Now in the script, all you need to do is to check if you're playing a legato interval, and if it's the case set the group index to the start note:
reg lastNote = 0; Sampler.enableRoundRobin(false); function onNoteOn() { if(Synth.isLegatoInterval()) { Sampler.setActiveGroup(lastNote); } else { Sampler.setActiveGroup(-1); } activeGroup = Message.getNoteNumber(); }
-
@Christoph-Hart said in How to play a specified RR group based on the distance between two notes?:
I would do is set the amount of RR groups to 127,
Have you seen the sampler UI with 127 groups :) Go on, give us a nice table view..
-
@Christoph-Hart My idea is to only need 24 RR groups, and put the upward minor second --> octave in the first 12 groups, and the downward minor second --> octave in the last 12 groups.
-
@d-healey You fool... Chris doesn't need any UI, I'm sure he's developing blindfolded and barefoot...
-
@d-healey said in How to play a specified RR group based on the distance between two notes?:
Have you seen the sampler UI with 127 groups
Yeah I fixed that a few weeks ago:
My idea is to only need 24 RR groups, and put the upward minor second --> octave in the first 12 groups, and the downward minor second --> octave in the last 12 groups.
Do whatever floats your boat, but with my suggestion you get the most simple script because you don't need to do any calculations of which group to enable. And using 128 groups instead of 24 has no performance impact at all, it's just an index.
-
@Christoph-Hart said in How to play a specified RR group based on the distance between two notes?:
Yeah I fixed that a few weeks ago:
It's better than it was, but it's not really any better for 127 groups (how do I view all the samples in groups 90-100 at the same time for example?). At least the indexes are correct now :)
Guess which group I have selected here?
Yep, number 99 :)
-
@d-healey hmm ok, I just tried to "unglitch" the UI. What would be your suggestion for a proper solution? Maybe once the RR group count exceeds the number that can be shown properly, make a popup button with a bigger UI element that shows every group? Any ideas of how this should look?
-
@Christoph-Hart said in How to play a specified RR group based on the distance between two notes?:
What would be your suggestion for a proper solution?
I think we should do what Kontak does (but better), have a table view. Additional features such as renaming and colour coding groups would be nice, also if we could see with a little indicator of which group is triggering (Kontakt shows a speaker icon). But just a simple table with multi-select would suffice.
Maybe this discussion could be separated into another thread as I've derailed this one?
-
@d-healey yeah I‘ll definitely don‘t want to add the ability to name groups or other organisational tools as this will encourage the wrong usage of tucking too much into a single sampler.
-
@Christoph-Hart said in How to play a specified RR group based on the distance between two notes?:
this will encourage the wrong usage of tucking too much into a single sampler
What would be your approach for an instrument that has a lot of articulations and a modulation chain that is the same for all the articulations. In this scenario is there an advantage to using 1 sampler per articulation?
My thought is that I would use a single sampler and separate the articulations into groups (with or without round robin), and switch the active group(s) for the desired articulation. In this scenario it would be helpful to label the groups so I know which one contains which articulation.
-
@d-healey Using one Sampler for each articulation feels clearer and safer
-
@CatABC But you'd have so much duplication. Imagine there are 10 articulations, and they all need the same modulation and effects.
With one sampler per articulation everything would be repeated 10x. It seems to add unnecessary complexity and performance overhead.
-
@d-healey yes I'm not arguing that there is a use case where it might make sense. My argument is that I don't want to incentivize people to cram everything in a single sampler by giving them the impression that this is a recommended workflow by adding convenience tools for this. Because then the next thing people will ask is how to make a FX chain per group or limit certain modulators to a range of RR groups and BAM we're back in Kontaktland.
If you realize as a power user that this is the best architecture for your project, then there's nothing against it, but then you have to live with the mild inconvenience of going a little path outside the recommended path.
-
@Christoph-Hart said in How to play a specified RR group based on the distance between two notes?:
the next thing people will ask is how to make a FX chain per group or limit certain modulators to a range of RR groups
Pretty sure I already asked for this too :beaming_face_with_smiling_eyes:
-
I rest my case your honor.
-
I think it's better to use one sample per one velocity for dealing with true legato, that way everything is in one group instead of having to deal with 127 groups, managing them an populating them.
-
@aaronventure ah so just use
setVelocity(targetNoteNumber)
instead ofsetActiveGroup()
? Yeah that could work and I also don't need to think about a solution for the UI problem of RR groups, so I guess everybody's happy now :)