is it possible to reset 'global round robin counter' in Kontakt 4?
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
Quick question to anyone who knows how KSP works. I want to make an instrument playback identical each time, specifically I want 'round robin' index (or what ever it is called) set to zero each time playback starts.
I checked NI forums and there are solutions, but each of them includes writing your own 'round robin' script - this way, I know how to do it. It seems like unlocking an open door though, is there no system variable you could simply reset?
I checked NI forums and there are solutions, but each of them includes writing your own 'round robin' script - this way, I know how to do it. It seems like unlocking an open door though, is there no system variable you could simply reset?
- KVRAF
- 23102 posts since 7 Jan, 2009 from Croatia
Press the "!" button in top right corner and the whole Kontakt engine will reset. Unfortunately you cannot automate this in a DAW, so you would ideally indeed need a script for that to make it repeatable.
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
Yes, but I want to reset from kontakt script level. I'm guessing that, it's impossible apart from not being an elegant solution?
- KVRAF
- 23102 posts since 7 Jan, 2009 from Croatia
Yeah, that's not possible.
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
In which case it look like I will write my own round robin... Seriously the more I know about KPS, the less I respect it.
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
I let myself do it. I did it already, actually. I just had to turn the groups on/off manually from script... Not really complicated, but it seems so backwards. Anyway, case closed. I praise evil powers that I didn't waste more time searching for that mythical engine variable that I imagined should exist.
- KVRAF
- 23102 posts since 7 Jan, 2009 from Croatia
Using allow/disallow_group() from the script is very cool, as you can do various things you cannot do with Group Start Options - for example, you can create arbitrary round-robin chains of unequal lengths, and you can have random non-repeating RR for multiple sets of groups (this is totally not possible with Group Start Options).
I don't think you should lose your respect over KSP. It can do a lot.
I don't think you should lose your respect over KSP. It can do a lot.
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
True, it's easy and creates new possibilities. I see that one can do a lot in KSP, it's just the way some things has to be done, that brings a heavy facepalm upon me.
-
- KVRer
- 11 posts since 15 Jun, 2013 from germany
Would you share the RR-Reset script with me?
I´m not really a programmer and don´t know how to build an "allow/disallow"-script from scratch.
The only thing i need would be a script that allows me to reset the RR-counter via midi so i can reset the playback every time it starts.
Thank you very much in advance for any hints!
I´m not really a programmer and don´t know how to build an "allow/disallow"-script from scratch.
The only thing i need would be a script that allows me to reset the RR-counter via midi so i can reset the playback every time it starts.
Thank you very much in advance for any hints!
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
Point is that you can't reset Kontakt's internal round robin, you need to disable round robin functionality entirely and write a script which does it by assigning incoming notes to groups. The most simple script would look like this:
It will rotate notes though all available groups and reset round robin position on transport start (playback start in DAW).
Code: Select all
on init
declare $round_robin_position
set_listener ($NI_SIGNAL_TRANSP_START,1)
end on
{when new note received}
on note
{set the note properties, so it will not trigger any group}
disallow_group($ALL_GROUPS)
{set the note properties, so it will trigger current rr group }
allow_group($round_robin_position)
{move round robin position}
$round_robin_position := ($round_robin_position +1) mod $NUM_GROUPS
end on
{reset round robin when playback starts}
on listener
if($NI_SIGNAL_TYPE = $NI_SIGNAL_TRANSP_START)
$round_robin_position := 0
end if
end on
-
- KVRer
- 11 posts since 15 Jun, 2013 from germany
Ah, i see.
So this gets complicated as soon as several Velocity layers come in etc.
I really see why you mentioned that KSP does some things in strange ways. Shouldn´t it be a pretty easy task to tell Kontakt to reset the counter? (Or even: go back or whatever).
So this gets complicated as soon as several Velocity layers come in etc.
I really see why you mentioned that KSP does some things in strange ways. Shouldn´t it be a pretty easy task to tell Kontakt to reset the counter? (Or even: go back or whatever).
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
Not so much when you figure it out, you just need to script round robin instead of setting it up in Kontakt menus. I don't quite see why velocity layers are relevant, it's all based on group index. You set which note goes to which group.drym wrote:So this gets complicated as soon as several Velocity layers come in etc.
Sure, it should be easy. It just seems, NI didn't make such option available.drym wrote:Shouldn´t it be a pretty easy task to tell Kontakt to reset the counter? (Or even: go back or whatever).
-
- KVRer
- 11 posts since 15 Jun, 2013 from germany
The instrument i am about to edit has 3 vel. layers and 5 RRs in total.
Each velocity layer has it´s own group which might does some additional filtering or similar in the group FX.
I can imagine how this works if the group count is equal to the RRs...
should have learnt to program earlier this life
Each velocity layer has it´s own group which might does some additional filtering or similar in the group FX.
I can imagine how this works if the group count is equal to the RRs...
should have learnt to program earlier this life
- KVRAF
- Topic Starter
- 4655 posts since 1 Aug, 2005 from Warszawa, Poland
It's never too late to learn stuff. And Kontakt scripting ain't rocket science. You can break it down to step by step thing, like...
If you think about it, you can do more this way than with menu stuff.
Code: Select all
...
if($round_robin_position =0)
allow_group(0)
allow_group(1)
allow_group(3)
end if
if($round_robin_position =1)
allow_group(0)
allow_group(4)
allow_group(5)
end if
...and so on