|
From: Christian S. <sch...@so...> - 2004-09-11 18:39:49
|
Hi! I started to implement key groups (important for drum patches and monophonic instruments) in LS today, but it seems I haven't understood completely Gigasampler's concept regarding keygroups yet. I implemented it that way today: if a key is triggered then I'll check if there's another key active in the same key group and if so I trigger the release process of the voices on the other key. Now I tested it with the free natural studio drumkit: http://www.naturalstudio.co.uk/ns_kit.html and it sounds like the key group mechanism isn't working at all; reason: the hihats (which use the key group feature) usually use a very, very long release time. So the question is, should I simply override the official release time when I release a voice due to a keygroup conflict? If yes what release time should I use? I simply can't find additional patch informations for this in the gig format. Maybe I have overlooked something? I'd appreciate If somebody could enlighten me! CU Christian |
|
From: Sebastien M. <me...@me...> - 2004-09-11 23:00:36
|
Hi Christian :-) What you call keygroups is usualy refered to as exclusive groups. What you have to do is to simply kill the currently playing voice of an exclusive group when the user starts playing a new voice on the same group. (Of course you have to take care of the potential click and fade out the rendering). You can picture this as a monophonic sub layer inside a layer... Sebastien Christian Schoenebeck wrote: >Hi! > >I started to implement key groups (important for drum patches and monophonic >instruments) in LS today, but it seems I haven't understood completely >Gigasampler's concept regarding keygroups yet. > >I implemented it that way today: if a key is triggered then I'll check if >there's another key active in the same key group and if so I trigger the >release process of the voices on the other key. Now I tested it with the free >natural studio drumkit: > > http://www.naturalstudio.co.uk/ns_kit.html > >and it sounds like the key group mechanism isn't working at all; reason: the >hihats (which use the key group feature) usually use a very, very long >release time. So the question is, should I simply override the official >release time when I release a voice due to a keygroup conflict? If yes what >release time should I use? I simply can't find additional patch informations >for this in the gig format. Maybe I have overlooked something? > >I'd appreciate If somebody could enlighten me! > >CU >Christian > > > > |
|
From: Vladimir S. <ha...@so...> - 2004-09-12 02:09:23
|
Guys, I think we have already discussed this topic of "simply killing" the voice back when we were talking about voice stealing. Is it just a quick release and if so where do we get timing parameters for it? Any ideas? Can the same mechanism be used for voice stealing? Regards, Vladimir. Sebastien Metrot wrote: > Hi Christian :-) > > What you call keygroups is usualy refered to as exclusive groups. What > you have to do is to simply kill the currently playing voice of an > exclusive group when the user starts playing a new voice on the same > group. (Of course you have to take care of the potential click and > fade out the rendering). You can picture this as a monophonic sub > layer inside a layer... > > Sebastien > > > Christian Schoenebeck wrote: > >> Hi! >> >> I started to implement key groups (important for drum patches and >> monophonic instruments) in LS today, but it seems I haven't >> understood completely Gigasampler's concept regarding keygroups yet. >> >> I implemented it that way today: if a key is triggered then I'll >> check if there's another key active in the same key group and if so I >> trigger the release process of the voices on the other key. Now I >> tested it with the free natural studio drumkit: >> >> http://www.naturalstudio.co.uk/ns_kit.html >> >> and it sounds like the key group mechanism isn't working at all; >> reason: the hihats (which use the key group feature) usually use a >> very, very long release time. So the question is, should I simply >> override the official release time when I release a voice due to a >> keygroup conflict? If yes what release time should I use? I simply >> can't find additional patch informations for this in the gig format. >> Maybe I have overlooked something? >> >> I'd appreciate If somebody could enlighten me! >> >> CU >> Christian >> >> >> >> > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 > Project Admins to receive an Apple iPod Mini FREE for your judgement on > who ports your project to Linux PPC the best. Sponsored by IBM. > Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
|
From: Christian S. <sch...@so...> - 2004-09-12 15:24:47
|
Es geschah am Sonntag 12 September 2004 00:59 als Sebastien Metrot schrieb: > What you call keygroups is usualy refered to as exclusive groups. What Yeah, but AFAIK in the Gigasampler world it's called keygroups. Probably because the gig Format only allows a key to have one region, unlike e.g. the DLS format which allows several regions for the same key. > you have to do is to simply kill the currently playing voice of an > exclusive group when the user starts playing a new voice on the same > group. (Of course you have to take care of the potential click and fade > out the rendering). You can picture this as a monophonic sub layer > inside a layer... Ok, already guessed that, just wanted to be sure. Thanks! I commited it to CVS minutes ago. Es geschah am Sonntag 12 September 2004 04:09 als Vladimir Senkov schrieb: > I think we have already discussed this topic of "simply killing" the > voice back when we were talking about voice stealing. > Is it just a quick release and if so where do we get timing parameters > for it? Any ideas? I simply use a very quick exponential fade down (see EGADSR::CalculateEndCoeff()) and every state can now immediately transit to the 'end_stage' which actually does the quick fade down (btw, we have to kill denormals there, I forgot to do that). Here the latest state diagram: http://www.linuxsampler.org/doc/engines/gig/EGADSR.pdf > Can the same mechanism be used for voice stealing? You can use the new Voice::Kill() method to kill a voice (e.g. for voice stealing). It takes care of the fade down (to avoid clicks) and processing until the kill event actually occured. CU Christian |