# Question about voice Grp and Excl. Grp in Kontakt 3.



## rishabh (Nov 13, 2008)

Hi,
I was wondering if anyone could help me on this...

So I have sampled a percussion instrument with two mics, so I have each hit in sets of two. I wanted to have control over individual mics so I put them in two seperate groups.
For example: openhat.01.L.wav and openhat.01.R.wav 
closedhat.01.L.wav and closedhat.01.R.wav etc.

Now if I use the voice choke groups and assign each to a single voice group to simulate a real hi-hat open close effect it will work fine if I had just one sample set in one group, but now that I have a set of two groups I cannot assign them all to one Voice group because I may just hear one of the four samples. If I set the voice group voices to 2. It may play the wrong set of samples, for example it may play openhat.01.L.wav and closedhat.01.R, which is not how I want it to work.

Any Ideas how to do this??

Thanks in advance...


----------



## TheoKrueger (Nov 13, 2008)

Hi,

Every group in kontakt can be assigned to a different mute group, so you can have 4 groups on No1 , 3 groups on No2 etc. So you can have all your Hi-Hat_R samples on group which are numbered No1 and all the Hi-Hat_L samples on groups that are numbered and programmed to be on No2.
One other idea implemented by many libraries is to have two different patches set to the same channel with identical programming so you will be sure that every mute group will be playing correctly.
The same goes with round robin samples.. you can have all the close mics on groups set to round robin 1 2 3 4 and all the distant mics also set to groups with 1 2 3 4 round robin. So for example:

Hi-Hat L 1 - mute group = 1 - Round robin = 1
Hi-Hat R 2 - Mute group = 2 - Round robin = 1 (again one so you can have round robin for the open samples as well).

Personally i dislike mute groups because you cannot have the amount of release that -you- want on the choked sample but rather it chokes on its own. Its better to have a group with a very very low release on the ADSR and to draw the midi note as you like it.

My 2 cents.
Theo


----------



## polypx (Nov 13, 2008)

Theo's right. If you assign a diffferent mute group to each "set" of exclusive samples, you get the result you want.


----------



## rishabh (Nov 14, 2008)

Thanks Theo. 
That helps a lot. Your idea of setting a desired ADSR instead of choke groups is good too. Though that may require more tweaking, especially if its not just hi-hat stuff. I'm actually making a tabla mulit-sample library. So there are many hits from each hand and they need to be choked if they are triggered simultaneously, Its working fine for me so far.
Thanks again.


----------



## rishabh (Nov 14, 2008)

On another note, I was wondering if its possible to make a script which will have control of the volume and pan of the two mics being used, so it can be up to the user to choose which mic to use or maybe even use a blend of both.
I know this is possible with the script editor but my instrument has a huge amount of groups in each 'mic' set. I am not finished yet with the library and I already have 62 sets in total,i.e 31 for each 'mic' set.
Any easy way around to get this script done?


----------



## polypx (Nov 14, 2008)

Be easiest if you keep your groups organized, so that the FIRST 31 are one mic, and the second 31 are the other... then you could assign your knob like this:


```
on ui_control($Level)
$i := 0
while ($i < 31)
 	_set_engine_par($ENGINE_PAR_VOLUME, $Level,$i,1,-1)
inc($i)
end while
end on
```

and then do it from 31 to 62 on another knob.


----------



## rishabh (Nov 14, 2008)

Thanks Polypx
That seems like a good option, unfortunately my groups not organized like that right now. 
Is it possible to work with groups using their names? For example I have named every 'mic 1' group with a '.L' at the end of the group name and every 'mic 2' group with a '.R' at the end of the name.
Can I do a 'While' statement that categorizes the groups by their names or specific characters in their names?

Another thing I am wondering is if I do use your script will it affect all the groups from 1 to 31 relatively? because in my instrument all the groups are not set to the same level. If they just snap to the value of the ui_control it may not be ideal as it will lose the relative levels.


----------



## polypx (Nov 15, 2008)

As far as I know, there is no way to access Groups by their names, so it would be best for you to organize your groups. (I might be wrong about this, but I have never found this feature.)

The script above will affect all groups ABSOLUTELY, so yes, they'll all be set to the same value. If you want to keep relative levels, you'll have to first get them all and store them (maybe in an array), and then offset them using a knob instead.


----------



## Big Bob (Nov 15, 2008)

> As far as I know, there is no way to access Groups by their names, so it would be best for you to organize your groups. (I might be wrong about this, but I have never found this feature.)



Actually, there are two group name functions: *find_group(<group-name>) *and *group_name(<group-index>).* While K2/3's string functions are very primitive, if you know all the group names in advance, you could initialize a string array (for example* !GrpNames*) to the group names. Then you could use the loop index to retrieve the group names one by one and use the find_group() function to convert the name to its corresponding index. For example:


```
_set_engine_par($ENGINE_PAR_VOLUME, $Level,find_group(!GrpNames[$i]),1,-1)
```

God Bless,

Bob


----------

